The most intractable issue, even once the routing problem is solved, is that huge amounts of traffic are all going to a few places, and those places require a lot of bandwidth. For example, it would really suck to live next to Google's data centers, or even Slashdot's data centers, because a lot of traffic would be going through your wifi to get to Google.
IF traffic were spread evenly across the network, there wouldn't be a problem, but it's not. So you kind of need a backbone of some sort. (maybe someone solved this? Solution is unknown to me, though)