I don't know about battlefield2, but if it uses the quake3 (or any ID engine), you can:
goto the folder base(q3, q3, something "base") and you'll find a base*.pk* (or *.pak). Rename this to base*.zip. Open it, and look for the crosshair .tga's. They are probably in the Sprites, or Grapics/SFX folder. When you locate them, find the crosshair that is the one you want to change in the game. Make a note of the location of the crosshair (the path + the filename), e.g. sprites/crosshairs/mycross.tga, and then use a program like The GIMP (
www.gimp.org) to make your own crosshair. After you're finished with your crosshair, create a new pak file of your own called "mycrosshair.pk* (.pak)) and compress your crosshair.tga file into it with the same path and same name. It will then have replaced the crosshair with your own.
Here, I'll use quake3 as an example:
(1): Goto C:\program files\quake III Arena\baseq3
(2): Rename pak0.pk3 to pak0.zip (you may have to tell windows to show file extensions)
(3): Open pak0.zip with your fav' archiving program (WinZIP, WinRAR, etc...)
(4): In the archiving program, browse to the folder, gfx/2d/
(5): You will now see a few TARGA (.tga) images. The one we will focus on is "crosshaira.tga"
(6): Select and extract "crosshaira.tga", and open it with The GIMP or Photoshop
(7): Edit it to suit your needs
(8): Create a folder called "gfx"
(9): Browse into the newly created folder called "gfx" and create another folder called "2d"
(10): Save your image into this "2d" folder
(11): Create a new archive called "mycross.zip" and compress the "gfx" folder into it
(12): Rename "mycross.zip" to "mycross.pk3" and place it into the "baseq3" folder.
(13): Luanch the game and enjoy your new crosshair!
That is how it is done for Quake3. It will be almost the same thing for any ID engine. If it is some other 3D engine (like Unreal, or Halflife), then you'll have to get their custom archiving tools. But in the end, it is still really just the same thing.
Good luck!
Note: Punkbuster and other cheat detecting programs might see this change as a cheat, and therefor you might be kicked out of servers.