You could encrypt the password + a salt with a public key. For logins just check if the stored value equals the value calculated from the user input + salt. If there comes a time, when the password needs to be restored in plaintext, you can decrypt manually or semi-automatically with the private key. The private key may be stored elsewhere and may additionally be encrypted symmetrically (which will need a human interaction to decrypt the password then).
I think this is actually kind of similar to the way the Windows Recovery Agent works.
- Passwords are stored encrypted
- People can login without decrypting to plaintext
- Passwords can be recovered to plaintext, but only with a private key, that can be stored outside the system (in a bank safe, if you want to).