Tambien puede depender del tipo de estado de sesión que utilices, o el entorno en el que se ejecuta... Si son varios servidores y se realizan balanceos de carga entre ellos, salvo que uses como estado de sesion sqlserver, las variables de sesion se pueden perder.... pero no siempre!
De todas formas, para lo que quieres hacer, yo recomiendo utilizar roles, teniendo en los web.config de las carpetas restringidas algo como:
<authorization>
<deny users="*"/>
<allow roles="administrador"/>
</authorization>
y en los elementos que no deseas qeu se vean
elemento.Visible = HttpContext.Current.User.IsInRole("administrador")
y por cierto, le pondría al rol un nombre menos "evidente"
Salu2