A way to potentially improve drag and drop functionality would be to combine spring-loaded Dock icons and Expose.
Hovering the cursor while “holding” the dragged object over an application’s Dock icon would trigger the application windows Expose mode for that application, which would then allow users to select a drop destination window. This is similar to how Exposé-assisted drag and drop works, but would be more direct as specific applications could be immediately chosen from the Dock without having to switch using a second hand (one for dragging the object, one to hit Cmd-Tab) or mouse button.
When an object reached the Dock, it could highlight valid destination applications using a halo around the icon, a different icon background color, or perhaps a differently colored/shaped indicator in place of the black triangle which indicates that it is open. Perhaps all three!
This attempts to solve the primary problem with drag and drop – positioning. Users waste far too much time carefully positioning windows to make them visible targets in order to reap the benefits of drag and drop.
I initially considered a mode in which the application’s windows would come to the foreground at normal size in the layering order in which users had placed them, but it is unrealistic to expect users to remember the layering order and positions of an application’s windows. Users deal better with visual clutter than they do with mental clutter.