[Flippant] End users are strange creatures, period. There's no accounting for what makes sense to them and what they'll do (even with explicit instructions). [/flippant]

A good rule of thumb is to never trust that the data entered by end users is reliable and accurate, even if you give them explicit instructions and train them on how to correctly use the system you've built. It's best to take whatever they give you and only sanitise it to the extent that it can be stored safely. Only on output should you manipulate it, if at all.

Name sanitisation is complex, if not impossible. Simply converting everything to lowercase and making uppercase the first letter of each word is not a good solution; you'd have to build something that can accurately handle exceptions (such as e.e. cummings, van der Merwe, VanDyk, etc.), which is no small task (and is nearly impossible). Also, the sanitizer would have to handle UTF-8 characters accurately (not just ASCII/Latin-extended). 

Popping up a warning/specifying a correct format and hoping your users will take note is probably the best you can hope for. Attempting to force them to 'do the right thing' is an exercise in futility.