In general the best practice specifically to "Sign Up" forms and processes are to keep them barrier free as possible. If a user is easily confused by a sign up form/process, they may never attempt to register for your service and move along to the competition.
For sign up form buttons specifically. I would suggest leaving the button in its enabled state. If a user happens to land on your sign up pages interested in signing up for a service, but doesn't understand why the button is disable, they might never complete the process (low possibility but defiantly a possible barrier). Also if a interested user lands on your sign up page with a disabled button and no JavaScript enabled, the user will never be able to sign up as the buttons state will never change.
Client side validation is defiantly a usable enhancement here but, should be paired with a server side process to catch those few users that might have JavaScript disabled. Validation would not be a barrier to sign up simply a guide to help those that make a simple mistake.
Also note, if the sign up button is enabled by default when the user is done entering there information, the enter key should be able to submit the form automatically. This means your focus issue, should not be an issue any longer!