What you have here Tony, to give a slightly different analogy is effectively the same problem as having two USB "slave devices" and trying to get them to talk to each other.
[in that you and your friend are behind NAT'ed and gods knows what else firewalls, and therefore cannot accept incoming connections,you can only make them - sort of how a USB slave device works]

The only way to achieve that will be by using the equivalent of a USB "master" as a proxy to communicate to both slaves.
[BTW: There is a USB experienced person on the board here who is proposing to do exactly this to add USB slave to slave capability to the Empeg - look in the projects board/section for more details]

Of course, the analogy runs out here as its actually a software issue not a hardware one, but then the USB slave to USB slave problem is mostly a software problem too.

But you could imagine a "IM" type of place, like a Telephone Exchange that does voice conferencing where two incoming calls are routed to a common "place" where both parties can exchange files and whatever.

I would have thought that one of the existing IM services would offer this sort of thing.

Hey wait a minute - what about "Microsoft NetMeeting" or similar "service" - yes its MS software/protocols (well sort of), but from memory the Netmeeting protocol has up to 65535 "channels" that can be used (with the right software) - so surely you could concoct something up using Netmeeting - assuming both parties are using NetMeeting compliant software - not sure about Linux, but windows has lots of NM clients.
It also supports file transfer, real time chat, shared white board amoungst other features (including shared audio/video).