There's no such thing as a perfect system, and that includes P2P. The opportunities here are for systems that reduce or eliminate problems. If you're building an application, however, these problems need to be addressed if they impact quality:
- Network message latency
- Difficult to control users
- Little or no centralized services
- Network conditions between peers are unpredictable
- May be blocked by ISP or corporate network
- User may not always be connected to the network
- Authentication is difficult
These negative attributes are sometimes related to positive aspects of P2P. They should be considered in the context of your specific application.
The JXTA community has started work on all of these problems. But there's no such thing as the perfect solution. (I once heard a sales guy say that, after smoke started to billow out of his computer.) By attacking general problems as a solution provider, or just making your application address these issues better than the competition, you can create opportunities to make money.