It seems to me that Perceptions have won over Substance. Very little of substantive issues were debated during the course of the election, both in the media and by the parties. All the fight was to create perceptions - good guys versus the bad guys, strong guys versus the weak guys and so on. In which it was perhaps the Congress which had the upper hand. Though, that might not be the sole reason for BJPs loss.
The BJP was never really in the running because of its near zero presence (with or without allies) in over 180 seats and marginal presence in another 100. Take the allies off in the rest of the seats and what we have is BJP effectively fighting about 200 seats -implying, that it would have needed a strike rate of over 80% to even reach 160 seas on its own. Now that was always very improbable.
You could say the Congress has been lucky the second time round with many things falling in its favour. But the geographical spread probably was the main reason.
That brings us back to where we started. It’s probably the inability to manage perceptions that has limited the geographical extend of the BJP’s influence to start with.