Good question! Nice to see someone considering such points. Philosophising over computer application and usage is important. What you describe is a Distributed System.
If I were you, I would consider looking at the likes of SETI@Home project and other "screensaver processes" that use redundant CPU cycles to process large amounts of data. Chances are that those guys will have considered this kind of situation before.
The main issues are:
This is the question of "how can I ensure my request gets processed when the node I ask to process the request may fail - and how do I handle such inevitable failures?" (see Jeff Atwood's Coding Horror piece on the Chaos Monkey concept (in today for a possible method of investigation
Memory speed (or CAS) would be so variable that this would mean that any application would have to have enough memory available locally, at the place of use, that it could manage its tasks. In the same way that a Windows machine uses a Page File, so a distributed architecture could use specific nodes as memory caches
There are other considerations (such as security, usability, and yes bandwidth to some extent although you can always add more nodes, etc) but these will suffice as a starting point for you. Good luck with your research.