Prova a fare così:
Nel db, nella tabella utenti metti due campi in più:
data_ultima_operazione - data/ora
id_pagina_visitata - numerico

A questo punto definisci un tempo limite massimo per dire che l'utente è ancora online (ad esempio 10 minuti), ovvero, superato il tempo limite l'utente viene considerato offline, anche se egli sul suo browser sta ancora visualizzando una pagina del tuo sito.

Come ben sai il web non ha stato e quindi non è possibile in alcun modo definire se un utente è connesso ad una pagina oppure no, in quanto, la connessione tra l'utente e il server avviene solo per quel lasso di tempo in cui avviene la richiesta della pagina (dal client al server) e l'invio della stessa (dal server al client), a meno che non si usino speciali programmini (applet, swf) che in background inviano un "segnale di presenza" al server (ad esempio ogni 60 secondi - troppo stressante per il server...) in modo che venga aggiornata la lista degli utenti online.

Ad ogni modo, fatti quei due campi nella tabella utenti e definito un tempo limite di online, fai si che ogni volta che l'utente clicca su qualcosa, il campo "data_ultima_operazione" viene aggiornato con la data e l'ora attuale, mentre il campo "id_pagina_visitata" memorizzerà l'id della pagina che si sta vedendo in quel momento (vedi questo forum ad esempio, ogni forum ha un suo id).
Per costruire la lista degli utenti connessi, fai un select sulla tabella utenti e prendi tutti quelli la cui data_ultima_operazione sia superiore alla data/ora attuale meno dieci minuti:
codice:
"... WHERE data_ultima_operazione > #" & dataAdd("n", -10, Now()) & "# ..."
Per dire invece in quale pagina sta un determinato utente, basta leggere l'id_pagina_visitata e fare una query sulla tabella che lista le pagine (o le categorie).

Se l'utente clicca su LOGOUT fi una update della data_ultima_operazione facendola diventare pari alla data/ora attuale - 10 minuti.