I think that Sayid's character has always gone back and forth on the good/evil spectrum. He tries to resist his violent tendencies, then somebody tells him he's a killer and asks him to do a little dirty work, which he does (often with some justification). Then he has some guilt/remorse and tries to change. Lather, rinse, repeat.
I don't think his "infection" was terminal, and he still had his free will, as always. His conscience was numbed throughout much of this season, but I think that his chat with Desmond did him some good--and we saw tonight that he still had the capacity to choose to help/save his friends.
I also thought that his fate gave us an interesting and ironic twist on the stereotypical Iraqi suicide bomber image.