I'm not commenting on the security side of the solution, there are real experts here who can help with this (or turn it right down ;) ).

However, assuming your solution (with SHA256) is acceptable and secure, your main problem seems to be that "carefully comparing all the digits of a SHA-256 hash .. takes a while".

Indeed, comparing a string of 64 hex digits is not an easy task for a human, so - why not think in the direction of presenting the same information in some human-friendly form?

Off the top of my head - let's have a dictionary of words (or images). Let each hex byte (00-FF) be used as an index to that dictionary. As a result we have a list of 32 words (or images) on the screen...

I'm sure you've got the idea...

*Yes, I do realise this has nothing to do with Cryptography.SE*