I think that the problem with people canvassing for charities is that they are not operating on the same principles as people in their daily lives. This is their job. And unfortunately, many times for their job, they are trained not to take "no" for an answer, while at the same time trying to create an atmosphere that keeps the "mark" treating them like friends, who it would be rude to refuse.
When a previous poster says "It was like she didn't hear me," that's because the canvasser is trained not to think, "Oh, she says she can't contribute, too bad!". Instead, s/he is trained to think, "Hmm, what strategy can I use to make them change their minds?"
There are polite canvassers out there, certainly. But there are also a lot of shady companies whose only interest at the end of the day is that they get lots of money out of the people they call. While one must not be overtly rude to such people, one needs to switch from "Oh, this guy called up and refers to me by name in every sentence, it would be rude to end the call before he does," to "This is a commercial call - he really has no interest in my wellbeing, and it is not rude to say I'm not interested and hang up."