This has been my experience to a limited degree as well. I'll admit,
sometimes I've even been one of the freeloading whiners. I'm willing to
bet most of us have, although we may not have thought of it as "whining"
when we did it.
Far too many users expect that because you released a project, you are
honor-bound to improving it any way the users want. It just doesn't work
that way. If I release code, I release it to be nice, not because I want
to be chained to it forever.
As a user, I actually miss being able to buy boxed copies of Red Hat or the
like for this kind of reason. Sometimes I really do have major issues that
need to be solved that I myself can't reasonably solve (e.g. the way my
whole desktop gets corrupted every 60 minutes or so on the Open Source r600
graphics drivers), and I've got absolutely no way to even get a developer
to look at fixing these bugs instead of dumping more time into developing
new code that I can't use because the code it's built on is too unstable.
It's frustrating. Yes, I could contribute (assuming you don't consider
detailed bug reports "contributing"), but as a full-time student with an
almost full-time job and a handful of other projects that I could just as
easily work on in Windows, sinking the time into learning how to debug and
fix a graphics issue in massive stack including X, Mesa, and DRI just isn't
feasible. I'm stuck. I won't tell the developers that they have to fix my
issue -- they don't, they don't owe me a damn thing -- but it's easy to see
why users can be so demanding. I literally can't use Linux for some things
I actually need to do because of a silly bug, was forced to purchase Win7
(the first time I've bought a copy of Windows in almost a decade, excluding
the copy that came installed on my last laptop), all just to do my school
work (graphics programming). I can only imagine how other users that don't
have the know-how or drive to file bug reports are reacting to Linux as a
whole when running into frequent corruption on common graphics hardware.
It _is_ hurting the project.
That said, users need to learn how to work with developers, especially in
Open/Free projects. At the end of day, the user got what he got for free,
and if it just doesn't work and nobody will fix it and the user can't/won't
fix it, the user just needs to go use something else. Most projects really
don't care if the user leaves, and the user needs to understand that.
Nothing is as ineffective as "I'll go use Foo if you don't fix this!"