Battlefield 3 has been crashing on me since day one. I think I have finally fixed it. Here's how.
1. Reinstalled Windows 7 on my SSD
2. Bought a new SSD and installed Battlefield 3 on it
2a. In new SSD, create a folder called Origin Games
2b. Download Origin program. Open the Origin program, click Origin<Application Settings< General Tab
2c. Where it says Downloaded Games, click Change and select your new Origin Games folder in the new SSD. Leave Game Installers to default location.
2d. Install Battlefield 3 to Origin Games in new SSD
3. Update PunkBuster at: http://www.evenbalance.com/index.php?page=pbsetup.php
3a. Install the PunkBuster program, open it, find Battlefield 3, add it to the program, and Update it.
4. Disabled SSD Discovery in services.msc Make sure you Disable it, setting it to manual will allow it to turn back on when you reboot your computer.
So far this has yielded a cumulative 10 hours of game-play with no crashes. Normally would crash every 20-60 minutes. I hope this or a modified version of it works for you.