How can I validate required fields?
There's definitely something wrong with your theme, or a custom/contrib module you've got installed. Required fields are always validated and checked for empty values; they just piggy-back off the FAPI #required property which I've never known not to work.

As far as debugging goes:


Check the context the registration form is being displayed in. If you're manually adding the registration form in your theme, and doing so in a template file, the problem is simply that the messages produced by the form builder are being built after $messages has already been outputted in page.tpl.php (ignore this one if the problem is happening on the main registration page).
Change the default theme back to Garland and see if the problem persists.
If it does, start methodically disabling contributed and custom modules to isolate the culprit. Start with custom modules, then dev/alpha/beta contrib modules (in that order), then the stable modules. Check the registration form each time you disable one.
To make sure there isn't some sort of conflict between your theme and a custom/contrib module, make sure you switch back to your custom theme before starting to disable modules.
If all else fails, install a fresh copy of Drupal as a test site, add a couple of required fields to the user entity, and check the registration form again. If it works, you know there's something definitely wrong with your main installation. If it doesn't (which is extremely unlikely), you know the problem is more sinister (i.e. it's a crazy problem with PHP/MySQL/your OS)