It could just be the server you are using.
Check your settings in your firewall to make sure that the ports you need are allowed internet access.
This from the Tweak Guide for BF2 might be useful
"Connection Settings: Battlefield 2 requires a broadband connection and cannot be played on a dialup modem. As such the options for connection speeds here are limited to 'Cable 256 KBPS or Better', or 'T1 (LAN)'. For all broadband users playing on the Internet I strongly suggest selecting the first option, as the T1 (LAN) option requires too much bandwidth to maintain steady pings - clearly it is designed for LAN play. To check your Ping in an online game, press the TAB key (default) and look at the number to the far right of your name. For more details on Pings and Lag, see the Video settings below, as well as the Server Browser section later in the guide."
and from the game Read Me
"INTERNET / NETWORK PERFORMANCE
This section is very important to experiencing good internet play!
- JOINING MULTIPLAYER GAMES:
To get the best performance on your computer we recommend
you follow these guidelines:
Minimum system - Join servers that have up to 16 players
Recommended systems - Join servers that have up to 32 players
High end systems - Join servers that have up to 64 players
ISDN users - Join games with a maximum of 16 players.
ADSL/Cable users - Join games with a maximum of 32 players.
T1/LAN users - Join games with a maximum of 64 players."
Hope these help.