But hold on a minute though. What do we do if we need to cater for older browsers? Well we can use a 'shim' or 'polyfill', as we might to support some of the other HTML5/CSS3 features.
There are several such shims for forms, but the one that seems to be everything a shim should be is 'NWX Forms' created by Diego Perini. Why do I say that? Because you simply reference it on the page, add a line of script to initiate it when the page loads, and that's it. Your HTML5 forms work from IE6 upwards. There's no adding extra classes to the inputs or anything else whatsoever.
If you use Expression Web I have a snippet that adds the necessary code. (See the HTML5 Snippet collection at http://ew-resource.co.uk/sp2-snippets.aspx).
If not it's a simple as this:
Full details and exmaples/demos on GitHub at https://github.com/dperini/nwxforms
* Don't forget the need for server-side validation too, for complete form security