I've managed to fix it, but I'm not entirely sure why it's fixed it.
I tried changing the page file settings from completely automatic to manual. It occurred to me that Win7 might be running it on the SSD I've got the OS installed on and wondered if it might be better on the same HDD as BF3. That completely wrecked my system though, even Windows was lagging, and changing the settings back to default didn't help.
So I unplugged the HDD that BF3 is installed on and that fixed the Windows lag. I plugged the HDD back in to see if that made the problem come back, and lo and behold, everything works fine now: I'm getting ~40FPS in BF3 again.
No idea why it worked, but it's working, and that's what matters....