De momento, un error mío, mysql_num_rows() requiere un parámetro, en este caso, $result... pequeño detalle que se me (nos) pasó.
La función esUsuario() lo único que hace es verificar si el usuario actual tiene sesión iniciada o es un invitado.
Sugerencia, después de login redirige a una página donde sólo tengas:
Con eso vas a ver lo que hay en sesiones y en cookies, si todo va bien, entonces llamas a la función esUsuario() y vuelves a usar var_dump() para ver si hay cambios, si es el caso, entonces en esa función algo hay mal... como comentaba en ese tema, son ejemplos y no todos los probé, pero podemos hacerlo funcionar.