I've been in a situation where development
and testing happened on windows and deployment happened on AIX with very few problems and no special precautions taken. Problems did exist, but they were all environmental, like limits on the size of path strings. You can shoot yourself in the foot as a developer but common sense can usually avoid those situations.
Of course, if you are specifically leveraging platform specific technologies (like maybe gui toolkits or any other sort of native library) then you do have to be a little more careful.
Edit: of course there is the whole problem with there only being decent jdks available on a limited number of platforms. That is a real hindrance to portability but there are people working on it
Edit2: removed a quote-fix that was in somewhat bad taste...