Hola,
No estoy muy puesto, pero, cuando yo quiero que la instancia de un objeto esté disponible "globalmente" no uso la sesión de usuario, sino, propiamente, una variable global:
Código PHP:
$GLOBALS['miobjeto'] = new MiClase();
Tal vez los tiros puedan ir por ahí... puesto que la sesión de usuario "se controla", de alguna manera, y acaso, sin que lo quieras, tu objeto es destruido "desde fuera"... prueba a ver con variables "globales" en lugar de con la sesión de usuario.
PD. Para comprobar si una determinada variable global contiene la instancia válida de un objeto, pues creo que las funciones que mencionas pueden servir... cada una a su modo, pero, todas pueden servir. "empty()" podría valer, puesto que la variable no debería estar "vacía"; "is_null()" también podría valer, puesto que la variable de marras no debería ser "nula", e "isset()" también podría valer, puesto que la variable debería estar "seteada" correctamente.