So, what security failures are you aiming to prevent?
If you're only aiming to prevent random guessing machines
from getting in, it's not a bad system, provided that the
mathematics behind SHA algorithm arn't too bad. However,
it won't offer any protection at all against network
sniffing, and if the network does get sniffed between,
there's a chance (I think) for the client key to be
comprimised. It might help if you have a password being
asked for regardless of if the hash went ok, so as to make
it harder for people to know if they get the hash part
right. You might want to complement this with SSL too.