Gaim Pidgin, and I often need to transfer files to someone. File transfer via instant messengers sucks. The file transfer for Yahoo Messenger protocol for example apparently uploads your file to some Yahoo server and then serves it to the person you're talking to. At least that's my guess judging by its behavior; I don't know for sure (which is another problem: I don't know what it's doing, which is scary enough that I can't use it to send any important files). Some protocols let you set up a "direct connection" to the person you're talking to, but this is always clumsy at best, or broken at worst (if you're behind a NAT router).
So what other options are there? SCP obviously. But I talk to people who (sadly) use Windows, and they don't run SSH servers. Nor do they have any interest in learning how to do it. Nor do they have any desire to use the command line for anything. Can't blame them really; not everyone is a geek.
I run a local Apache, and I can open it to the world and let people access my files that way, but that's not a lot of fun to try to secure and it's overkill just to transfer files. I'm certainly not going to leave a wide-open Apache server running all the time, which means I have to restart it every time someone wants to get a file from me. I've used Apache for this purpose before and it tends to go something like this:
Someone: I bet that song is nice. Can I have an MP3 of it?
Me: Sure! Just hold on while I edit /etc/apache2/httpd.conf and set the port and bound IP correctly, then reconfigure my firewall to allow incoming connections for that port, change DOCUMENT_ROOT to point to an empty directory for you or maybe set up a vhost, throw a .htaccess on there to prevent spying eyes, and restart the daemon.
I could run an FTP server, but same problem: overkill, and I don't want to have to secure it. I could set up a VPN, but that's not fun to configure ("Sure, I'll send you this file. Let's both install OpenVPN. First you need to set up a new TUN or TAP device. I'll wait while you do that.") There's always email, but that suffers from the same problem of my files having to pass through an intermediary server, and the inevitable problem of email mail box size limits (I don't have one, but other people may). I guess I could set up a local bittorrent server, maybe. Hmm.
It seems like such a simple problem: Quickly transfer a file from one computer to another given a port and IP address, using some kind of GUI. I'm thinking of writing my own little program that does this just so I can use it with people I know. Unless there's a good option I'm missing.