I don't think you've actually ever coded anything cross-platform to understand how difficult it really is.
The hard part is not just splitting the code between the business logic and the code - this should be done irregardless - the hard part is the way all the GUI elements are handled in different operating systems. Windows, buttons, sliders, menus, etc. take different inputs, send different events, are different sizes, between all OSes.
Specifying a size of 100x100 for a window, for example, will create a 100x100 window in OS X, but a 106x120 window in Windows 7 (Windows 7 adds room for the outside borders and title bar). And the inside of the window, the viewport, the part you can actually draw in, is 100x100 in Windows 7, but more like 96x92 in OS X. Scroll bars? OS X hides them, and you can draw beneath them, Windows 7, you can't draw beneath them. Some coordinate systems have (0,0) in the upper left, some have it in the lower left. And so on, and so on. You have to become an expert in both OSes.