Hi Alberto,
without having tried your code in an example, the probable problem is the mix of IfExistsValue with GetSessionValue.
I'm thinking you probably want to test for IfExistsSessionValue, or alternatively make use of GetValue if the Value exists.
Remember that Values are fleeting, and only exist for the life of the actual call. This means they are usually not there in a dynamic-update, such as a form field update, or a browse page update. Session Values are therefore the preferable item to use - as you have don. I think just your IfExistsValue should be an IfExistsSessionValue.
Cheers
Bruce