I started using a self-cleaning lube last summer (RockNRoll Gold) and gradually stopped using a degreaser on my chain. At the beginning of this year, I had a new chain installed and it's never been touched by degreaser, only lube. So far, it's been running nice and smooth and I've spent way less time cleaning it.

As far as when to clean: I listen to my bike as I'm riding. If the chain seems to make any squeaking noises, it's time to lube. I also look at my bike when I get home. I usually take a rag and freewheel the chain through it a few times to take off any dust or light gunk. If the frame's dirty, I wipe it off. If the components (brakes, derailleurs, etc) have dust or gunk in them, I'll wipe them more carefully and use a bit of lube on pivot points.

If the bike's muddy or the components are gunky, I'll take both wheels off and do the following:
- Wipe down the frame with rags and cleaning solution (Pedro's Bike Lust, Pledge and Armour All wipes are all quick'n'easy possibilities).
- Take a rag and "shoe-shine" between each of the rear cogs.
- Run a cotton ball moistened with rubbing alcohol around the rims of my wheels, being careful to avoid the tires.
- Use a spray degreaser (Finish Line, White Lightning, etc) on the brakes (not the pads), derailleurs, etc., then wipe the degreaser off thoroughly.
- Put the rear wheel back on and use my RockNRoll lube to clean/lube the chain. Tip: With any lube, self-cleaning or not, wipe it off until you think you've wiped too much. The more that's left on the chain, the more gunk it'll pick up.
- Apply lube to the other components.

Since I ride both on- and off-road, sometimes I need to clean every week, other times I can go a month on just a single lube treatment. It all depends on the type of riding I've been doing, weather conditions, etc. Last summer, I had plans to try to wash my frame in my bathtub, but I've found that I really haven't needed to resort to that.

Basically what it comes down to is: Just pay attention to your baby and it'll tell you when it needs to be taken care of.