It seems like you are getting into editing so i will tell you how to at least try and read the CTDs yourself.
Anytime the game CTDs, it gives a dump file.
Sometimes this file will give you the reason it crashed.
My Documents\Battlefield 2\dmp is where my dump files are stored.
Yours should be in a similar location.
Opening these files to read is a different story.
Wordpad and Notepad just give us garble.
So, download and install the debugging tool from the link below...choose the 32 bit or 64 bit depending on your OS.
Install Debugging Tools for Windows 32-bit Version
(FYI, once it is installed, create a shortcut for it and put it on your desktop for easier access to start it up)
Once installed, start the program, follow the path below in the pic and then choose the folder where dumps are located.

Once there you will see the dump files that have been created.
Choose the most recent dump file!
1) In general when the game runs in
full screen and CTDs, the dump file will give you no info on why.
Dump files that contain no info to your problem will look like this.
Dump files that actually give you the reason will look more like this.

The part I have highlighted in red is the only thing that matters.
The other stuff is junk.
My CTD was because of a weapon index conflict with hgr_smoke in a GB kit.
2) Another way of getting the game to tell you why it CTD is to play the game in windowed mode (non-full screen).
Generally if it crashes in windowed mode, an error window will pop up right after the crash and will tell you why.
You can stop there and right down what is says
OR you can again just open the dump file that was created and it will have the same info as the pop screen.
3) Running in debug mode is when the dumps tells you nothing even in windowed mode.
It's located in the main BF2 folder usually...
Program Files\EA GAMES\Battlefield 2
It's the icon that says
BF2_r.exe
Start it up and prepare to click continue a thousand times to get to
your error.
You know the game is crashing at around 14%, so keep clicking
'CONTINUE' until you pass that.
Everytime you say continue and the game
doesn't crash, the error that popped up is
not your problem.
Your problem will be the one that makes the game actually CTDs again.
Once this happens, check the dump files again.
It should give you a reason.
BTW, sorry this was so long...i had a link to tut that explained this all, but I don't have it anymore.