If you are using multiple X screens (i.e. you have displays
:0.1, etc), then it is not possible to move windows between them. Windows are bound to an X screen because the screens might have incompatible pixel formats or the hardware might not be able to share resources between the screens. Xinerama, RandR and TwinView were all designed to work around this by merging multiple monitors into a single logical screen.
I know Sun put work into Gnome 2.x to make sure it worked well in this configuration and applications launched from a panel of a one screen would cause the application to open on the same screen, but it is possible some of this has bitrotted since then if you're having trouble.
Some applications (like Nautilus) should be multi-screen capable out of the box, but most will only run on a single screen at once. You can force an application to launch on a particular X screen by passing a custom display string. For example, to launch Firefox on the second screen you could run the following:
firefox --display :0.1
Perhaps creating a few custom launchers with commands like this would help?