To be generic, if that's the case, then you can only be assured (and even then, not really) that each of you can make outgoing TCP connections. There's no way to match those two outgoing connections together without external help. And since you don't want to rely on the kindness of strangers, your only choice is to rely on the kindness of some corporation that provides such a service.

Right now, you're trying to do that with IM services, but the file transfer stuff they use happens not to work with your firewalls. Ideally, they'd just multiplex the messaging and file transfer on the same stream, but it doesn't appear that any current IM service does that, not even Jabber. Any other facility out there is likely to charge for it.

You could probably figure out a way to actually get two outgoing TCP connections to join up with some deep magic, but I imagine that's outside the scope of your request, and even then might fail depending on how your firewall rewrites ports.

So, for right now, I think you simply can't do it.
_________________________
Bitt Faulk