1. Confirm that gtkplugs already "do the right thing" 2. When not using a gtkplug, forward the XDND messages. (see http://jjlindal.net/jafl/xdnd/ for reference)
...or just use the simple gtk_drag_dest_set_proxy interface and let GTK do all the work. Seems to work reasonably on things I've tried. The main issue is that application-internal drags such as to reorder Pidgin's buddy list seems to lose something in translation, but that may be due to how Pidgin/GTK detects intra-application drags...not sure if anything can be done about that.