Al momento del login inserisci i dati realtivi a utente e tempo di accesso (un timestamp) in una tabella (online)
Nel tuo sistema metterai qualcosa (consiglio un frame nascosto) che si ricarica ogni 60 secondi (esempio).
Ad ogni refresh del frame aggiorni i dati nella tabella on line aggiornando così il timestamp con il valore attuale...
A questo punto hai una tabella in cui si è loggato un utente, e la precisione al minuto (nel mio esempio) degli utenti logati.
Qualora un utente chiudesse la finestra senza fare il logout, il frame smetterà di effettuare il refresh e aggiornare il camo con il timestamp.
Quindi tu potrari mettere un controllo (sempre nella pagina di refresh) in cui dici che tutti gli utenti con campo timestamp maggiore di un minuto (tempo limite del refresh) verranno cancellati dalla tabella on line, così non risultano più connessi.
Inoltre al momento del login ti basterà controllare che non ci sia già quell'utente nella tabella on line, e impedire o permettere l'accesso...