I have used several steam cleaners... find one that keeps the water heated and has good brushes. I find that after using the cleaning solution, going back over the carpet with just a hot water rinse keeps the carpets cleaner. The cleaning solution leaves a slight tacky residue that dirt will cling to.
Also if you have your own cleaner, you can hit those high traffic areas more often and it is easier to keep them looking nice. I would clean them a couple of times a month at my mom's, as they have clay soil there too. Sometimes spraying a pre-treater and letting it sit helps a lot. Not to mention being able to clean up spills as they happen is great!!!