Same issue here - searched the web for solutions and have now tried plenty of fixes and workarounds, each with a clean install. And nothing worked!!!!!!!!!
I'm using the 64-bit win7 though, which apparently is supposed to work, but for me it doesn't. One thing I did notice though is that after the crash to the desktop, there is still a BF2.exe process running - forcibly killing the process doesn't work either and I am forced to reboot to remove it.
Apparently the 1.5 patch is supposed to fix this problem, but I don't see anything about it in the change logs thus far, and it's also still in beta. Which makes it's 1.2GB download not worthwhile. So I gave up and uninstalled BF2. Maybe I'll just wait for bf1943 - which apparently works correctly...