One technique, that works suitably for certain kinds of apps such as reference applications:
Use HTML/CSS/JavaScript and write compact clients that uses the platform's HTML viewer object to read locally embedded web content.
One technique to write cross-platform application that ran on both BlackBerry and Windows Mobile, was to write it all in HTML. I had to use a subset of HTML and CSS that worked on both BlackBerry Browser and Pocket Internet Explorer. I used a small amount of JavaScript as well.
I wrote very small viewers that ran it off internally-stored HTML and images using jar:// (BlackBerry) and res:// (Windows Mobile) URL's. I was able to embed all the HTML and images files as part of the BlackBerry application, by using a custom version of the browser field and . Same for Windows Mobile, I was able to use Pocket Internet Explorer as an embedded ActiveX in my Windows Mobile application.
Note -- for BlackBerry, I had to support legacy devices running OS 4.2. To do so, I recycled a lot of RIM code samples, such as SecondaryResourceFetchThread.java to pull images embedded in the application, and deliver it to through a custom connection object that implemented HttpConnection that I designed to handle jar:// URL's for internally embedded HTML/images in my BlackBerry application. It was a little tricky to figure out. For Windows Mobile, it was more intuitive.
There are other ways to do what I needed, but it worked perfectly for a medical reference application, and I was able to design separate CSS files for BlackBerry and for Windows Mobile to reformat the content slightly differently for the two mobile devices. (It was kind of like testing Netscape versus Internet Explorer compatibility in the old days.)
This may not work for your situation, but if your application is a web-style 'reference' application, and you know how to do HTML well, this approach may work.