I've asked a few developers this question and the reasons for not contributing tended to fall into 3 camps:
1. Not enough time. These folks come home from a long day coding at work and want to spend their free time with family/friends.
2. Not enough interest. They're not opposed to the idea of contributing, but 'just never got around to it'.
3. Not sure where to start. This was particularly true among younger developers. They'd be interested in joining a project to improve their skills and work w/ others, but they weren't sure how to get started. What should they work on? Where is the project headed? If they just start hacking on stuff, will the lead contributor find it useful?
I don't think there's much you can do to change the first reason for not contributing (no time). But I think if Open source projects had better communication tools, possibly the second, and definitely the third reasons could be addressed.
I'm working on a pre-launch startup to make it easier for open source teams to better collaborate and communicate with each other. We want to create a space where developers can have face-to-face meetings, code reviews, and pair with new programmers to get them up to speed.
You can see the prototype at www.codemeet.com. If this sounds like it'd be of interest Isaac, I'd love to talk to you more about how it could be integrated into some of the projects you're working on :)