IMHO, the biggest stumbling block for cross compilation is the fact that on *nix the linked to libraries are needed, not the fact that it has to be done with an external linker.

Cross compiling to windows was easy (no need for kernel32.dll during linking) and has become easier because of the internal linker (no need to distribute an external linker).