I noticed a tremendous difference in my brews when I had fermentation temperature under control. Also, pitch a few degrees *under* your target ferment temperature, let it warm up to the correct temperature naturally. From what I understand, a large amount of off-flavors are produced in the beginning stages of fermentation, during the cell multiplication phase. If you're a few degrees under your target temp, most of the replication should be complete in cooler temperatures and you should end up with a cleaner tasting beer. Pitching the correct amount of cells is also important. If you're using liquid yeast, make a starter. Dry yeast? Rehydrate. It gives you the largest amount of viable cells from the packet as opposed to just sprinkling it on top of the wort.
The next big factor is water, if you're all-grain. I build from RO, and use acid (or base) as necessary to control mash PH. This has helped both mashing efficiency *and* the flavor of the beer. Keeping PH in check and having the water salts correct has resulted in much 'cleaner' flavor beers. Water can be a contributing factor in extract, as well - If your flavor (or kettle) salts aren't right for whatever brew you're making, it can have an effect. Hops might be muted in an PA/IPA, or the maltiness of an Octoberfest might be muddled. For a baseline, in extract brewing, use RO water. See if that changes the flavor and gives you the 'clean' profile you're looking for.
Another big jump is cold crashing and fining. I have taken to crashing all my brews down to 0C/32F for 24 hours, then fining with gelatin, then giving them another 48 hours. The beer is very, very clear when I rack to the bottling bucket or keg. It's also crisper tasting than the same brew done without cold crashing.
Process control is important. You need to take reasonable precautions against introducing oxygen into your beer post-ferment. Be careful with racking; no spashing. I don't do secondary fermenters unless I'm aging a beer or adding some sort of fruit. Any time you rack from one fermenter to another you are introducing oxygen, so minimize this as much as possible.
Time. You need to let your beer finish! Leave it in the fermenter until the yeast is done cleaning up after itself. Depending on the OG of the beer, I leave mine in the fermenter for anywhere from 10 to 14 days, sometimes longer if I don't see it dropping mostly clear on it's own. When the initial heay fermentation is over, I'll usually bump up the temperature 2-3 degrees to help the yeast finish (for ales, I don't really do lagers).