The actual problem is that my SELECT query is being executed meanwhile the UPDATE one, but instead of waiting for the UPDATE to be executed, it doesn't wait and gets the value from the field prior to the update.
I believed it was because of the MVCC, and I was looking for a workaround to force the select to wait for the UPDATE to finish, instead of taking values of a snapshot.
If you can demonstrate a case where session 1 is holding a transaction open on a completed UPDATE statement and session 2 with a SELECT FOR UPDATE is not waiting for session 1 to commit I am pretty sure you will be demonstrated a bug.
"conversely, SELECT FOR UPDATE will wait for a concurrent transaction that has run any of those commands on the same row, and will then lock and return the updated row (or no row, if the row was deleted)."