Credo sia impossibile farlo "a prova di bomba" senza avere una di quelle chiavette che danno le banche... ad ogni modo io farei una roba tipo:

Richiedi l'accesso
Ti viene mandata una mail con un codice univoco di (esempio) 36 caratteri (UUID v4?)
Cliccando sul link finisci sul sito e, se il codice è stato generato da meno di un minuto entri, altrimenti nisba


Ovviamente se il malintenzionato ha accesso istantaneo alla mail è insicuro, ma penso che qualunque sistema, a quel punto, lo sia...