I've had BF2 since release, there's plenty to do, infantry, tanks, apc's, jet's, choppers etc, and the map a a mix of urban and wide-open space.
This is very much a MP game, there is a SP mode with about 15-16 bots, but they're pretty stupid and easy to beat.
It's alittle buggy, but then what game isn't. There's also several mods in development which will be even better than v(anilla)BF2, and of course they're freeeeee.
I only received CoD2 the other day, and so far it's pretty good. The SP part is great, I've chosen the hardest level so not to finish it to quickly.
The MP part I'm still getting used to, especially the different game-modes. I love the 'rifle only' servers, there's no so much pray and spray. I do feel though as if there's something just not right, either punkbuster isn't doing it's job properly yet, or it's the way the game is designed. I just need to find the right server I think.
You can't go wrong with either, but if the BF2 mods are anything like the BF1942 mods, then BF2 would be my first choice.