Partly this is the fault of our culture labelling all mental health issues under the broad brush of "s/he's crazy".
This. A thousand times this. This is totally correct.
Just look at language. Love it or hate it, political correctness is a fairly good way to track society's attitudes. And we can see that many people, nice people who would never dream of calling someone "nigger" or "fag" or "bitch" or "lame" or "fatty", have no problem with using words like "crazy" in polite company.
It's inconceivable that a politician who described his/her opponent as "insane" or "deluded" would face criticism from anyone apart from the most radical bloggers. Compare that to what happens if a politician uses a word that even sounds like a racial or sexual slur!
I'm not making any big judgement here. I call things "crazy" all the time myself. My point is simply this: the language we use proves that society as a whole does not think of mental illness as a thing that affects "people like us". It affects other people. Those crazy people who are insane and therefore not like us and our friends. Crackheads and people who were abused as kids and so on. People we can comfortably assume aren't present in the room when we're talking.
Is it any wonder that people will go to extraordinary lengths to avoid considering the possibility that they themselves might have mental health problems?