While I have a handful of my own open source projects (mostly libraries), I gave up on trying to contribute to open source. I tried approaching a number of projects and the level of disinterest and arrogance was frankly jaw-dropping. I was treated like someone who is out to outsmart and put to shame everyone on the "core team".
In one case I asked if they had any thoughts on moving from Google Code to GitHub, listing possible benefits and reasons. To this the first reply was that forking was evil, GitHub was broken and that I shouldn't really be troubling very busy people with such stupid questions. Then more people piled on with personal attacks. That was damn odd. All I wanted was to submit a bugfix.
With another project I wrote them how to trim down and lighten the code, and no one even bothered to reply. I wasn't condescending, always bearing in mind that it was their project and I was just passing by. Yet another project - made a replacement for an awful app icon - again, like talking to a wall, not a blip from the other end.
One notable exception was the Linux Kernel project. They accepted a couple of patches with no fuss whatsoever, and rejected another 2 or 3 with good arguments.
(edit) Having thought about it a bit more - the problems appear to lie with multi-person projects. I had good experience submitting fixes and patches to single-maintainer projects. They were all accepted or rejected promptly and with courtesy. But once there's a group, then there are leaders, prima donnas, politics, social hierarchies and you name it. A coding society, not a development project.