Il caso della coppia (username, password) può essere ricondotto al caso di considerare solo la username (basta effettuare una concatenazione delle stringhe per ottenerne una sola).
Comunque la soluzione che ti ho illustrato serve piu che altro ad invalidare le sessioni inutili sul server e non propriamente a gestire il tuo problema. Per capire se un utente è gia loggato al sistema una soluzione potrebbe essere quella di aggiungere semplicemente alla tabella degli utenti, quella in cui tieni traccia di username e password, una flag che indica lo stato di ogni singolo utente (loggato/non-loggato) e aggiornarlo in maniera opportuna al login e logout dell'utente. Ovviamente quando arriva una richiesta il server la accetta ed apre una nuova sessione solo se lo stato di quell'utente è non-loggato. Certamente il problema rimane se l'utente chiude il browser accidentalmente; intercettando l'evento chiusura della finestra tramite javascript potresti effettuare una richiesta di logout in background, il che funziona solo se l'utente ha abilitato javascript... In questo caso rischieresti il problema opposto, che la coppia (username, password) rimanga bloccata e nessuno può piu usarla, nemmeno il leggittimo proprietario! Potresti aggirare il problema facendo in modo di richiedere la password all'utente se e solo se la richiesta arriva senza cookie.

Se la tua applicazione prevede la presenza di molte sessioni attive contemporaneamente ti conviene usare la soluzione del DB.