This is a solved problem. Look at CAC/PIV smartcards. Virtually anyone with a computer is used to carrying around a credit card or ID card. Just add a PK circuit.
All of the problems I mentioned are solved for technical users, or special situations with the right equipment available (like a CAC reader... I certainly don't have one of those integrated into my mobile phone, or laptop for that matter).
That doesn't help when we need a general solution with usability that comes close to remembering a password.