This is a repeat, with deeper thought. Hope it helps.
If you play online most of the time, Battlefield 2 is for you, but if you prefer single player gaming like myself, then Call of Duty 2 is perfect.
If you're still in doubt, look at it in the following manner:
Call of Duty 2 will last until you've finished all the Single Player campaigns, but they are very well worth it. The game has a multiplayer, but nothing compared to the next option.
Battlefield 2 does not have a strong Single Player campaing... hhmmmm, let's just say iot doesn't. But the online entertainment will last for quite a while. Much longer than CoD 2s single player campaing. Hell, I'm still playing BF2: Modern Combat on my PS2!
I have both games for PC and I am extremely glad i do.