I use a can/bottle of Motor Flush before every oil change on all of my vehicles. I have been doing it for over thirty years and have found it to be very beneficial, as none of the engines that I have used it in have had any internal gunk build-up. I also change my oil every 3000 - 5000 miles, using a quality oil and filter.
Why has no one brought up zinc? Modern oil doesn't have enough of it because of emissions and cat longevity. For those of you running flat tappet cam set-ups it's pretty crucial to have lots of it in your oil. Seafoam works well but it's essentially just kerosine so you might as well use that with some water. GM makes the best product for this hands down. You pour it into your valves until your cylinders are full and let it sit overnight. The next morning it will have evaporated and loosened up pretty much all carbon and gunk so when you start it up it will make a smoke show that will put Seafoam to shame so watch that if you have neighbors. As far as oil goes, I think a heavier weight on older engines is a good idea to help everything stay properly lubricated. As far as oil flushes go, Seafoam works well for this. After that you just need to keep running a high detergent oil such as Rotella or Pennzoil and you should be good. Running Teraclean through your injectors twice a year is a good idea as well because of the amount of ethanol that gets put in gas now.