There are a number of projects out there right now that are trying to 'protect' file-sharing from the prying eyes of the law, and protect their rights to free speech and the preservation of the internet as a medium for free, and free-flowing, information. In particular, there is gnutella, the decentralized file-sharing network, and there is also The Freenet Project which creates a sea of encrypted data on a network of nodes across the internet. Both of these are interesting projects.
Then, a while back, I got to thinking about Jabber, the open-source IM system. Interestingly enough, it is also decentralized. There is no 'master' server per say, and there is also no one particular client that must be used to access the network. It's a well designed system for IM, and it's open enough to allow for expansion. So then I thought, "Hey, why doesn't someone just take the basic idea behind gnutella, and incorporate it into Jabber?"
For those of you unfamiliar with how gnutella works, here is a very simplified description. When you make a search request, your query is passed on to all of the nodes/servers you know about (perhaps just one) where it is then passed on to all the nodes that that server knows about which in turn passes the request to all the nodes it know about, and so on. There are a few things involved to keep requests from cycling infinitely such as a timeout key, and a few other things, but that is essentially how it works.
So how would this work for Jabber? Well, when you executed a search, your query would be passed on to all the people in your buddy list. Each of those people (actually their client) would check their local shared files for your request, as well as pass the request on to all of the people in their buddy list. Whoever has the file, sends you an appropriately formatted message including their IP. (of course, similar measures are implemented to keep requests from getting stuck in loops)
Why their IP? Well, you wouldn't want to send the file through the Jabber server(s) because it would cause a lot of congestion, and it would also make the people who own the servers liable. All that is really needed is the IP if an appropriate transfer protocol (http, ftp, whatever) is implemented on the clients. Jabber doesn't really become the medium through which the transfers are taking place, just a facilitator for locating files.
Since Jabber itself is more of a protocol/architecture than it is a company/service, I think it would be a lot harder (for good or bad) for it to be regulated or beat to death with litigation. It also has the advantage of a completely decentralized system, and a variety of clients on multiple platforms. To me, it seems like the ideal platform for file sharing, and to boot, it has a great messaging system already working.
I've looked around sourceforge and the internet, but have not been able to find any clients that support this type of functionality. I have also done some reading on the Jabber protocol, and have not yet found anything to prevent such a feature from being incorporated. Obviously, there would need to be a 'standard' way of formatting the request, but that seems to be a simple matter of deciding on how to format the XML and deciding on a transfer protocol, such as HTTP.