When collecting first and last name from users, should the name be formatted if it will be shown to the user again?
Example: BILL is formatted to Bill
It seem almost impossible to account for all the variations on names.
I don't think you ever will be able to get it right, so it's better leave this responsibility to the user.
You can trim spaces, of course, but you shouldn't mess with the case.
The only foolproof formatting you could do, is to make everything uppercase. This might be handy for internal use, but not as a correction of the user's entry.
Country names, states, citys and so on can be formatted, though...
Instead of a systematic solution, you could use suggestion. For example, you could build a dynamic suggestion tool into the interface that offers a 1-click update to all lower-cased or all upper-cased names. If the name was "steve smith", maybe place a link next to it that says "Update to 'Steve Smith'" and then perhaps an ignore link. I imagine something like this might work well on a confirmation step of a signup process after the main flow is completed and a user might want to do some house keeping.
I'd like to understand the context more. If the user types their name in a particular way, then that should be how they are addressed. You could take it further - rather than collect first and last names, why not just collect 'name'. That way, if the user wants to enter not just their name but a title, they can do so.