I guess, being the resident Tigers fan here, it falls to me to bring this up.
So what happened is Joyce screwed up the call on out 27 and called the runner safe when clearly he was out.
Joyce owned what he did, and did so in a tearful manner. Galarraga handled it with class. He accepted the apology, accepted these things happened, and moved on. Personally I think a little blame falls to him, but the majority of it belongs to Selig.
I think Selig is the real villain here because:
1) he should reverse that call, and he did not. Galarraga has every right to be pissed at Selig (and hopefully is). In this way, Selig cost Galarraga a perfect game.
2) He should never have refused to implement instant replay more fully, especially for calls like this. Selig's desire to keep the human element in the game merely inserts the human error into the game (and while I am on Selig, he's a hypocrite, he wants the human element but turns a blind eye to steroids because it was saving baseball with the HR race it created) In this way also, Selig cost Galarraga a perfect game