If I have to pick one of these guys, which is damn harder to do than it should be for a bunch of pixels (Bravo, BioWare. Bravo.), it would be Garrus. He went from being my second favorite character in ME1 (Wrex stole the show in that one) and a generally likable, interesting character, to an all-out badass in the sequel. Some witty jokes, an interesting if cliche character-specific mission, and the fact that he doesn't drop dead every 45 seconds of gameplay this time around, makes Garrus take the top spot for me.
My second pick would be Thane. See, assassin's are always cool. An alien assassin with depth, deeply set beliefs, and actual character, is even cooler. Although I felt like I didn't get enough conversations from either of my two favorites to satisfy me, especially Thane. Once you're done with his character-specific mission, you can't really talk with him more, which kinda sucked.