I'm using Iphone 4 with iOS 4.3.2 + Sony MW600 BT headset. Just a side note, I'm not a technician nor a programmer so excuse me if i'm wrong.
I have reasons to believe some of the BT problems is caused by software issues and not the phone itself. This is either issues from the iOS itself or from Apps that all of us have downloaded. Don't get me wrong, as update iOS 4.3.2 goes, it made the iPhone more BT friendly to my headset.
As you all have stated, the problems have occured a while ago. Could this be the introduction of multi tasking on the Iphone? Sounds far fetched but could be related as earlier iPhones or iOS do not have multi-tasking. I've also found viewing some notifications (opening an App) would cause BT to drop if there are Apps already running in the background. Maybe some Apps are conflicting if they are opened one after another? As multi-tasking might be the problem, could sounds from different Apps be conflicting the sounds from the iPhone itself and cause BT to drop? That is, too many sounds are trying to play at the same time.
Please try this if BT is a problem, as it has worked for me. Most of you would know this by now, but I'm assuming some of you may need step by step instructions.
Turn your BT device off. Go to settings > Bluetooth > press on the arrow and forget ur BT device. Close all running Apps in the background (double tap home button, press and hold an App until it jiggles, then close all the running Apps). Turn Off your phone by press and hold the sleep button. Slide to OFF your phone. Press sleep button again to turn On. Re-connect ur headset by pairing it again. After you've done that, make sure you only have one App open at one time. If BT drops, then you can reconnect it by going to settings and connect your BT device by tapping your device name in settings > Bluetooth. If BT fails again, repeat the process again. It is tedious but it seems like it is the only way for my headset to work with the iPhone.
Hope this helps!