It sounds like you may be facing some other challenges, not necessarily related to those you describe.
If you've been developing portlets with html, head, and body tags, that's a problem. Your layout should contain those tags, but as you point out - because portlets are aggregated onto a single webpage - your portlets should not. See section PLTB (page 113) of the http://jcp.org/en/jsr/detail?id=168]Portlet spec (JSR168).
First things first - I'd work on getting your generated markup validating.
You can use the following tools to check that your markup is valid:
FireFox plugin: Html Validator http://users.skynet.be/mgueury/mozilla/ (this tool validates on the fly using the same parser as the w3.org site - very cool!)
FireFox plugin: Web Developer toolbar https://addons.mozilla.org/en-US/firefox/addon/60
IE6/7 plugin: Web Accessibility Toolbar http://www.visionaustralia.org.au/info.aspx?page=619
Safari plugin: Safari Tidy http://zappatic.net/safaritidy/
Manual entry: W3C validator http://validator.w3.org/
As for your JSF/Richfaces issues, I'd recommend starting with this article: http://www.infoq.com/articles/jsf-ajax-seam-portlets-pt-1
Thank you very much Andy.
Your remarks were very helpful. After reading Portlet Specification I realized the wrong structure we used, but we ship our product with Firefox and never there was a problem with it. But MobileSafari is a little more "delicate".
Thank you one more time.