Here's something my family has always done with odors that simply REFUSE to come out of the carpets. Sprinkle baking soda all over the rug and wait 2 hours. It is best if you can keep traffic to a minimum. Vacuum it all up and voila! Fresh new smell and you didn't even have to hire out a service! :) Also works great on pet stains! For that we usually spray simple green first, a multi purpose spray that you can get at Wal-Mart. Let it soak for 20 minutes, blot up the excess, then do your baking soda magic!