Infatti il mio metodo era per evitare quella possibilità.

Forse puoi mischiare le due idee.

Registri solo il session_id, se l'utente si rilogga da un'altra postazione, gli segnali che c'è già l'utente attivo e che se ti logghi lo butti fuori, cosi dai la possibilità di fermarsi.
Nel caso l'utente voglia comunque procedere ti fai dare nuovamente la password per conferma e procedi come nell'esempio che ti avevo dato.

In questo modo comunque non precludi l'accesso alla piattaforma (ad esempio se il browser va in crash non riprendi la stessa sessione, quindi ti eviti il problema dei log in autorizzati), ma anche nel caso in cui l'utente non è autorizzato (o come vuoi definire i doppi accessi che vuoi evitare).

Purtroppo il punto è che l'ip non è un valore attendibile, il session id non cambia solo da postazione a postazione, e non puoi sapere se l'utente esce dalla piattaforma senza aver fatto il logout.

Un'altro compromesso potrebbe essere registrare il timestamp di quando si logga e l'id di sessione. Se cerca di loggarsi da un'altra postazione glielo vieta, almeno finchè non scade la sessione dell'altro utente (ad esempio time_start + 10 minuti).
In questo modo chi è loggato accede perchè ha l'id di sessione, chi si vuole riloggare non può, rimane il problema del crash del browser (l'utente anche se sulla stessa postazione dovrebbe aspettare nel peggiore dei casi 10 minuti per poter accedere).

Queste sono le possibilità, di meglio non so se si può fare.

[edit]
quando scrivo di registrare il time_start intendo dire che a ogni operazione dell'utente loggato all'interno dell'area protetta dovrai aggiornare questo valore, in modo che finchè l'utente utilizza la piattaforma avrà l'esclusiva.