If you are running a older PC, chances are your CPU is bottlenecking, BF2 is CPU single core intensive and doesn't make use of multi-cores properly or hyperthreading. The only way to improve FPS related issues in a CPU bottleneck is to overclock your CPU so each single core is running faster, or shut down other processors that the CPU is processing.
You can use
Razer Game Booster Performance Boosting & Screencapture Software - Razer Canada to see if this will help, I think it would for windows XP machines. This shutsdown processors for maximum gaming performance, it also includes a virtual isolation software, that may help. It also clears your ram before gaming so it will help if your RAM is contributing to the bottle neck. If you have a high end PC, do not use this, as it won't help you at all.
If it's GPU related, then turning down your video settings would help.
You can also force either your CPU or GPU to handle more of the processing than the other when running a game. In NVidia CP, it is the maximum pre-rendered frames setting, switching to a higher setting will make your CPU work harder to render while letting your GPU breathe, and vice versa, switching this lower will make your GPU work harder, letting your CPU relax. This also increases or decreases the mouse and keyboard input response time.
So it really depends what you have, if you have a good GPU like I do, setting it lower will free up CPU usage and may improve FPS allowing your CPU to do something else other than pre-rendering for your GPU.