Forget what you've heard about religious conservatives and rural voters swinging the election to Bush. They didn't. In fact, the percentage of people choosing "moral values" as the reason for their vote actually declined from both 2000 and 1996. Moreover, Bush's percentage of the rural vote also declined slightly this time.
There appears to be three "tilts" that gave Bush his 3% edge. There was a slight--a very slight--tilt to Bush based on his leadership during a time of war. It takes quite a bit to unseat a president when the bullets are flying, particularly when Bush was able to promote his leadership as being about something large and important, i.e. the promotion of freedom. (Personally, I think the bin Laden video probably gave Bush a bump of a percentage point or two. It shifted the attention from Iraq, the greatest foreign policy disaster of the past 50 years, to terrorism, supposedly Bush's long suit.)
Secondly, Bush's "give the millionaires more money" domestic policies resulted in his carrying over 60% of the vote of people who have over $100,000 in yearly income. Take them out, and Kerry wins by 3%. (Remember when Bush looked out on revelers at a white-tie gala and said, "Some people call you the elite. I call you my base"? He was right.)
I think the Catholic bishops had some effect as well. Gore carried the Catholic vote 50-46. Kerry lost it 52-47--a nine point swing. Some Catholics may well have been influenced by the bishops' obvious promotion of Bush. Unfortunately, American Catholics are apparently unaware that the Bush administration is not at all popular in the Vatican these days, primarily because of Iraq. (I wonder if Kerry should have jabbed at the bishops a bit. Many American Catholics have a kind of rebellious streak and might have liked it. Plus, the bishops are quite a bit more un-popular, overall, than they are popular. A lot of people--OK, me--would have thought they had it coming.)
Finally, we should not discount the effect of out-and-out brazen lying on the part of the Bush campaign. (Personal favorite: Dick Cheney saying he'd never said there was a link between al-Qaeda and Saddam. Runner-up: Dick Cheney saying, "Vote for Kerry. Get nuked.")
This should have been expected. Bush campaigns are always this way. (Just ask Dukakis, Richards, McCain, Dole, or Gore.) This is why Kerry's biggest mistake was not knocking down the swift boat ads back in August. He had said "bring it on," and when they did, he wasn't ready.
We Democrats should have gotten absolutely apoplectic about this--red faced, veins popping out, fists pounding on the table--and then fired a salvo about something like the Bush family's involvement in BCCI.** We should have shoved it back in their faces, and let them know there was more to come if that was the route they were going to take in the campaign. But we didn't.
I'm not dissing Kerry. Overall, he ran a good campaign and he's a stellar person and he won three debates and I don't want to say anything bad about him. Still, the swift boat lies had the campaign reeling for about two weeks and everything after that felt like trudging uphill.