No uses session_register() en combinación con $_SESSION .. Usa sólo $_SESSION (el array superglobal).
Por otro lado .. el "session_start()" debes usarlo en todos los "case" o mejor en el principio de ese script .. Es necesario para pretender no sólo dar valor a una variable de sesión sino para acceder a sus valores también.
Luego ya vendrán otros problemas .. por ejemplo referentes a la propagación del SID .. Te recomiendo ver las FAQ's de este foro (hay algunas sobre sesiones) y la documentación generar sobre sesiones de PHP en:
www.php.net/session.
Otro detalle (esto es "teoría" de sesiones .. pero es necesario conocerlas !!!!):
session_register('a');
$_SESSION['a']=true;
echo $_SESSION['a']; /aca imprime bien en pantalla
Así tal cual lo haces no puedes obtener el valor de la sesión (el real, el que contiene la sesión en el "servidor") .. sólo estás viendo a $_SESSION y su valor (de uno de sus indices) como un simple "array". Los valores de una variable de sesión (aplicable a una cookie ya puestos a ver teoría), sólo son accesibles o dicho de otra forma "reales" en la próxima iteracción con el servior, ya sea una recarga de página .. o un link que llama a otro script .. etc.
Un saludo,