The problem you're seeing is that you're specifying a click event on a link that doesn't happen when you submit the form by hitting the enter key. The page isn't actually just refreshing, the form was submitted. But your function is listening for the click event on the hyperlink, not the submit event on the form.
Couple things here - first, don't use PHP_SELF in the action attribute of your form. Just leave it blank, or leave it out entirely. The form will target the current page for submission.
Secondly, I'm not completely sure why you're jumping through the hoops of hiding a submit button, creating a link with a javascript href, and then using that javascript to submit the form. It just seems like a lot of extra work for no reason. At any rate, if you're determined to go that way, remove the onclick and href attributes from the anchor tag and target the click event in JQuery.
<a href="#" id="fake_submit" class="btnLogin">Sign In</a>
$('#fake_submit').click(function(){
$('#login').submit();
});
Again, all this would be completely unnecessary by simply using the submit button you've already got in the form markup. As for the issue of not getting to the error checking - none of the code you've posted has anything to do with error checking. That may be a completely different matter, but won't know until we see the code.