Earlier quoted context omitted.
Emailing a single-use "sign in link" to a user (Slack calls these "Magic Links") is the way forward. Yes, it move the single point of failure to the user's email account, but expecting the regular user to use (and remember) unique passwords for each service is impossible -- they simply won't do it. Plus, when/if your service is breached, you won't compromise all their other accounts as well.
It's really a shame that we haven't solved this problem yet as an industry. I was thinking we could build a general purpose version of "Magic Links" for logging in, where the format of the email is well-defined, and the user's browser is able to receive these messages on their behalf through some form of integration. You could imagine a webmail provider offering some kind of polling or websocket API for listening for…
- whatever solution we come up with needs enough market force to push adoption
- whoever gets to own "single sign on" owns the world. This is why there was so much backlash against Microsoft Passport all those years ago.
Personally I'd favour some sort of hardware token, and we're very slowly moving in that direction with U2F.