I used to use a task killer a lot (I'm still new to android) but have realized that a program being 'open' but not active doesn't necessarily slow down the phone. Like if you have 500mb of ram, whether you have 400mb or 300mb of open-but-idle apps really should not make a performance diff for what you are working on right now. Actually it should just make them respond quicker when you switch to them. I was using my old Windows habit of killing anything idle to maximize free memory.
The app killer did 3 things for me:
1. Freed up a bunch of memory.... for little gain unless I'm at max.
2. Caused problems because some idling apps are necessary for a lot of general use activity.
3. Most of what I forced closed was startup bloatware that would soon just restart itself...whether or not I rebooted. So basically it saved a bit of ram for a couple minutes (very minor gain) but caused my phone to be 'busy' for another couple minutes re-opening all the bloatware (aggravating).
So, from what I can tell, the best way to keep your phone clean and fast is to either freeze the bloatware, uninstall the bloatware, or block it from starting up. To my knowledge, none of that can be done unless you root....which is something I have yet to try.
In defense of task killers though, Android's claimed ability to smartly close the lower priority idle apps to prevent maxing out memory use isn't very reliable either. Since I've stopped using my task killer I get that 'THIS app may need to close due to low memory' message fairly often. So much for Android closing all that background BS first!! In which case I will tell the task killer to do a sweep. It's not a complete waste of time, but that satisfying 'closed 100mb of apps' doesn't matter nearly as much as most people think it does. It's effective enough to help a little you when in need, but used routinely probably does more harm than good.