Menu stuff is client-only stuff. When you set dvar inside menu keep in mind you set local client dvar.
When client connects set new userinfo dvar. Then, if you change dvar using menu, you will be able to get it on server. I forgot gsc command to get userinfo dvars, @fraggy can tell you what command is it.
And yea, in this case this userinfo dvar used only as pipe from client to server and vice versa. You have to save real dvar value to stat or other non-volatile dvar because when you initially set dvar as userinfo - you have to send new value which overwrites player preference.
And, you know, using stats is better - it's built-in functionality. Very nice for storing integer values but you can't hold user input string.