I use Fake which drives Safari to test functionality and have not been
badly bitten yet (fingers crossed) with something that works on
desktop but not on mobile. This can't test on device functions though
so I use test stubs. I can then write another set of tests that tests
the test stub responses against actual on device api's.
I can't imagine that there are any programs that can check that 'it
looks good' on the mobile device. The performance between a 3G and a
3GS and a iPhone 4 are so different that some apps are unusably slow
but still work on a 3G but gorgeous on an iPhone 4. Only a live human
being can really check that.