This is false. You are free to use and improve it, even if you don't want to give your improvements back.
But then you are just not allowed to distribute the software with your changes as closed source.
> It's like one person giving to charities with no preconditions and another giving only to charities that support his political views.
That is a crap analogy.
The people who don't want to open source their improvements to GPL'd code aren't charities, they are businesses who want to make money of other people's work. The GPL provides a kind of compensation to these people for their work. Which is the guarantee that all (distributed) improvements will be GPL'd as well.
That's one of the main reasons why I like the GPL. I know I will in some form be compensated for my labour (as opposed to BSD), in the sense that any improvements to it will come back to me.