The following in your .htaccess should do the trick but you will want to test it fully before you go live with it:
Code:
RewriteCond %{REQUEST_URI} !^.*\.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [L,R=302]
Once you are happy change the R=302 in the last line to R=301, it's easier to work with temporary redirects while testing.
The theory is that if the .html ending is not present and there is not a file or directory of the given name then it rewrites the URL to end .html.