The trouble with powders is that they clog up your vacuum, leave a really strong cheap smell and are difficult to get out completely so they end up making the carpets smell worse than they did before. I use a very good spot cleaner called Simple Green, see
http://www.simplegreen.com/products_carpet.php
which you can buy in concentrate and lasts for ages so works out really cheap. It really does work, even red wine and dog accidents. For larger areas I bought the cheapest BexBissel electric carpet cleaner, which is very light weight and works well on my light coloured carpets - it's also good for sucking up spills like when we had a burst pipe - but I wish I'd spent that bit extra and got the carpet and upholstery cleaner as you can't do stairs with my model.