Nate Silver has a great explanation of why many pundits didn’t immediately grasp the scale of Obama’s victory:
My other annoyance with the punditry is that they seem to weight all segments of the debate equally. There were eight segments in this debate: bailout, economy, spending, Iraq, Afghanistan, Iran, Russia, terrorism. The pundit consensus seems to be that Obama won the segments on the bailout, the economy, and Iraq, drew the segment on Afghanistan, and lost the other four. So, McCain wins 4-3, right? Except that, voters don’t weight these issues anywhere near evenly. In Peter Hart’s recent poll for NBC, 43 percent of voters listed the economy or the financial crisis as their top priority, 12 percent as Iraq, and 13 percent terrorism or other foreign policy issues. What happens if we give Obama two out of three economic voters (corresponding to the fact that he won two out of the three segments on the economy), and the Iraq voters, but give McCain all the “other foreign policy” voters?
By this measure, Obama “won” by 14 points, which almost exactly his margin in the CNN poll.
Basically, people were impressed by John McCain’s handling of topics they don’t care about.