The right pair
My personal experience, having tested on my own skin both successful pair programming experience and unsuccessful ones, is to find the right programming pair.
I tried first with a good programming partner, and the level of success we had was astounding: our productivity was unbelievable, as working in pair made the experience funnier, kept us focused, reduced enormously the chance of bugs.
Often we managed to achieve the results right at the first try, without any debugging being necessary.
Even problem solutions were smarter, as my nitpicking was compensated and compensated his pragmatic approaches.
Then I tried with others, even friends, and the experience were jarring: endless wars and discussions about every single line of code, lost time, messy code, or no contributions, passive acceptance and almost no utility.
So my conclusion is, pair programming is wonderful, but with the right person, or at least one of the two must be very good at interpersonal skills.