To me, Halo 3 is one of the most overrated games in the history of games. First of all, the campaign is the worst one out of the three. I know a lot of people try to defend that with the whole "It's only played for it's multiplayer" argument, my answer to that is, a game that has no single player value is no good game.
Which leads me to the horrid multiplayer, how is walking around with the feeling of running in quick sand fun? It's too slow. It's a FPS, RUN-N-GUN is the saying! Not WALK-N-RUN!
Call Of Duty has it's problems too. Don't get me wrong, there is a lot of stuff on there that I couldn't stand. Mainly the abundance of 12-15 year olds screaming stupid crap into there headsets.
In the end I'd have to give the nod to CoD 4 easily. But as they say, to each his own.
Halo 3 hands down. I love Call of Duty and all, but custom games keep Halo exciting even after all this time. CoD gets boring after a few weeks...and then within a few months I start playing again.