Marco, the owner of Aire Cool cleaned the ducts in one of our rental units, after some particularly nasty tennants left. The charge was $50 per duct. He uses a brushed vac system with a camera, so that he can take care of any particularly bad areas. He also checks for damage and will repair it for you if it can be reached. They also ran some chemicals through the system that clean the coils, etc.
I will say that after painting and recarpeting, the unit still had a foul smell to it. Cleaning the ducts and coils resolved the problem for us.