One interesting, really relatively recent development in computer software is the rise of the large, widely-used, truly cross-platform GUI application.
There are a few approaches to writing these. The first, and certainly historically most common, is to separate application logic from presentation, and build separate interfaces in each client operating system, sharing application logic. This is how things like Photoshop have been built, although Adobe seems to be trying to replace the existing native UI used in Photoshop, Flash et al with some sort of awful Flash-based thing; as you can see
here, results are, at best, mixed. The advantage of this approach (separate interface development, not the scary Flash thing) is that you tend to get something which looks like it fits in; the big disadvantage is that it's an extremely expensive, labour-intensive task.
Then, there's the approach, notably favoured by Microsoft, of writing completely separate applications sharing branding, file format compatibility and some application logic on each platform. IE for Mac, for instance, used a completely different rendering engine to IE for Windows, and each had features that the other didn't; the same sort of thing has happened with Office applications. Microsoft Entourage is a particularly weird case; it's part of Office, like Outlook, and serves the same purpose as Outlook, but is branded differently and looks different.
Emulation and simulation is another approach. This is really common for games; most commercial games for MacOS and Linux are actually Windows games, with DirectX calls being translated by WINE or a piece of software derived from WINE. This works quite well for games; it works less well for normal desktop applications, where it has to deal with translating Win32 UI elements into something workable. Normally this is accomplished by just drawing fake Win32 UI elements, as using native widgets would cause sizing problems. This approach is rare for generally distributed commercial apps (an example is Google Picasa), though it's quite common for in-house apps. A related but not identical case is the use of X11 on platforms where X11 is not normally used; some development tools have MacOS versions which just use X11. This generally creates usability problems.
The final category, and the one which is currently seeing most growth, is the use of cross-platform UI APIs. When writing a desktop application with one of these, you don't make Win32 calls, or calls to the MacOS UI kit, or whatever, at all; you use a cross-platform UI API, which will figure out how to display things on each platform. Success rates are variable.
Here's a screenshot from the Eclipse IDE, which uses the SWT Java cross-platform UI library.

It looks really quite MacOS like. This is partly because SWT was really created primarily as a UI toolkit for Eclipse initially, and it really is quite polished at this point. Here's one from NetBeans, another Java IDE. This uses Swing, Sun's Java cross-platform UI toolkit.

Doesn't look too bad, does it? Let's look at another.

Not
bad as such, but certainly unusual. You won't often see the little icons in MacOS apps, though they're common on Windows. Eclipse also has these, but to my mind they look a little less obtrusive; they're not out in the empty area on the left:

This one is very weird; note the incorrectly-aligned 'Help' thing at the bottom:

This is just bad UI design, and I think it does this on Windows too; it should really change the size of the options window rather than doing some mad internal scrollbar thing, though, and in any case this is an options pane for a built-in plugin and should really fit properly in the first place:

And finally, HORRIBLE FONT MADNESS. This just looks terribly broken, and I don't understand why they've deliberately changed the default font to an unpleasant Serif one for this window, but no-where else:

Now, to be clear, none of this is a huge issue. These applications are perfectly usable, if a bit funny-looking. However, I think it is something that developers will have to concentrate on more and more as Windows' absolute dominance on the desktop wanes, and Linux and MacOS versions of software become more relevant. It'll be interesting to see where all this goes.