Sorry but I think that the only thing SIngh has on Swann is total number of wickets, otherwise Swann is clearly a superior spinner to Harbhajan. Singh is nothing outside of India whereas Swann was effective in most places (particularly in India)
Lets see, Harbhajan averages under 30 vs the above teams u mentioned (at home) but away its a completely different story. Sorry but averaging 28 in India and 38 outside vs Swann who averages 28 at home and 31 away is all that really needs to be said. But I'll elaborate even further. Swann averages over 30 only vs Oz, RSA and India, he averages under 30 vs everyone else. Swann also averages over 30 away only vs Oz and RSA. Singh on the other hand averages over 30 vs everyone else except for Oz RSA WI and ZIm. Away Singh is over 30 vs everyone except for NZ, WI and Zim. Suffice to say that Harbhajan's reputation owes a lot to bowling on pitches tailor made for him where as Swann was a lot more versatile. And that quip about Swann playing an Indian lineup on the wane, sorry don't buy it. No matter how much on the wane their lineup might have been , Indians (sorry to generalize) eat spinners for dinner regardless of form.
The 3 best batting line-ups that he faced incidentally...and it is nigh on 40 against Australia and South Africa. I don't disagree with you on their away records, Swann has a better record away from home no question but given his career trajectory it is likely he would have ended with numbers as bad as Harbhajan's if he had played another 40 tests (which is about 2/3 of Swann's entire career). Now looking at their away records :
Harbahajn averages sub 25 in New Zealand, Swann hasn't played in New Zealand.
They are about equal in West Indies and South Africa - Swann edges him out marginally in both places but you will have to factor in that Harbhajan probably played against stronger WI line-ups - Lara alone would make a big difference.
Australia - well Swann was definitely better in Australia despite not being all that flash himself but I dunno, the batting line-ups Harbhajan faced in Australia were superior to any Swann has faced anywhere, let alone Australia.
I'll give Swann Sri Lanka. As for Pakistan, again Harbhajan was crap in Pakistan but this was on pitches were the Sehwags and Younis Khans were smashing 200s for fun. Compare that to how the spinners performed and what the scores were in the 2 matches Swann played against Pakistan in the UAE.
It would be unfair on Swann to say he faced a crap Indian line-up in India but clearly it wasn't the same Indian line-up of the past (Tendulkar was totally hopeless against spin). Can't hold that against Swann though because it would have definitely been held against him if he had failed. So yeah, all said and done it was an impressive performance. Harbhajan's 2001 Australia series shades it and anything Swann has ever done though.
While I'd agree that Swann has been better than Harbhajan on the road, I don't think the difference is anywhere near as big as it is being made out to be.