Ragazzi le soluzioni sono svariate.
Esistono le sessioni, gli indirizzi IP oppure i COOKIE.
Poi è possibile anche appoggiarsi al DATABASE.
Pensandoci basterebbe salvare sul database ad ogni refresh di pagina fatta dall'utente una timestamp.
Poi se si ha la possibilità di inserire un cron nel sistema basta creare uno script che ogni 30 secondi distrugge tutte le sessioni di autenticazione che per esempio non hanno il timestamp aggiornato da 5 minuti.
Poi occorre considerare anche quanto tempo dura una sessione di autenticazione. La sua durata è fondamentale per determinare il tempo di attesa max.
Comunque si potrebbe anche utilizzare AJAX per fare interrogazioni asincrone sul server per verificare la eventuale attività dell'utente connesso oppure ad ogni accesso da parte di qualsiasi utenti si avvia una script di controllo. Quest'ultima soluzione è un pochino costosa perchè dipende dal numero di utenti presenti nel sistema.
Ripeto dipende molto anche dagli strumenti che si hanno.
In risposta alla tua domanda su come fa facebook è chiaro che FB avendo server dedicati (cluster) hanno procedure offline che girano in autonomia sul server come se fossere delle richieste CRON.
Spero di essere stato chiaro.