Tal vez el ciclo no se está ejecutando, y por eso $nombre y $apellido no están definidos y las variables de sesión se generan vacías. Revisa que la consulta almacenada en $query tenga de verdad resultados.
Por otro lado, te recomiendo almacenar en sesión sólo el usuario (id) y contraseña, y en cada página abierta realizar una consulta a la bd para comprobar esos datos y de paso extraer la información del usuario.