There is no real "fix" for it because it's not a problem, it's by design. The OS manages what apps and services run in the background for a streamlined user experience.
This has been discussed at great length in this forum, you can run a search if you really want details. But, if you just leave it alone, you'll see that Froyo does a fine job at managing resources.
Yes I've seen it discussed at length and I've read the developer's handbook for Android. To me it seems like a real problem when rogue applications open themselves and occupy valuable memory. If the OS has managed these applications to start on their own, then I suppose that is Android's unique flaw. If there is no reason for certain programs to start other than to monitor notifications or to make for an easy startup time, then it should just as easily be taken down.
Let's face it. This is like having a mini PC in our hands except we're relegated to low memory times of the 90s. Control is key especially for power users. I'm sure the rest of Android user population (those who never see these forums) will never even notice the change in their devices, but the moment my messaging app starts to stutter or it takes several seconds to go between settings windows, I notice there are several programs running and my available memory is below 150MB.
Now perhaps this is an HTC problem, that has instituted social networks always run or other HTC apps like Stocks, News, Clock, Footprints, Flickr, Facebook. I didn't ask them to run nor do I use them. They are NOT integral to the OS functioning.
So IF the OS operates as stated in the handbook, then the lifecycle of an application only is killed when it's given the onStop() or the onDestroy() method where onStop() is given when an another application needs the memory. I don't see any "exit" options or ways for apps to end naturally other than opening the App Manager.
If my above assertion about how Android handles application lifecycles is true, then both HTC's apps and 3rd party apps from the Market all have bugs because they do not have a Destroy method to remove them from memory.