As everyone else suggests, I would go with the 6800 GT. If you're budgetless, the 7800 GTX is obviously your card.
The advantage with the 6800 GT, as said earlier, is its very low cost for performance. It does support PS 3.0 as ATI does not. You can almost consider it a value card that can handle any game out there, including your Battlefield 2.
The 1GB ram is more than enough, but BF2 might test it a bit.
As for a CPU, definitely go AMD as everyone else has said. If you're a budget guy, look into the 3200+ Venice. I think they're around $190 and will play BF2 and any other game beyond the requirements.