You need to clean everything you can in the car. Not just the upholstery, but the vinyl, glass, headliner, etc too. If you were a heavy smoker there's probably a film on the inside of the windows which will actually have the odor in it. Dont just shine the vinyl, find a good vinyl cleaner then shine it afterward.
If you cant get a carpet shampooer, get some liquid carpet cleaner, and dilute it down for spot cleaning, carpet cleaning or whatever. Put it in a sprayer bottle and lightly dump it around your carpet and scrub with a stiff bristled brush. You dont need to soak it, but there should be enough so you can scrub it all around the carpet. Use a shop vac to suck everything up. Its not as easy as a steam extractor, but its very effective. You can also spray it down with the foaming carpet cleaner and lightly mist the carpet with a garden hose and scrub...and then shop vac. Mix a mild solution in a spray bottle for the headliner. Be more careful with the headliner. Spray it on, lightly scrub it, and wipe it off with a cloth. Leave the doors open in the sun for awhile to let everything dry. Then just Febreze the hell out of all the fabric, starting with the headliner.
This usually works on the cars that I get at the shop. We even have odor foggers that work like ant bombs and just fill the entire car with an odor killing scent. There is so much of it, that its supposed to force its way into vents and cracks. Its serious overkill, but it works.
These are just some tips for someone who doesnt have access to the same stuff a detailing shop may have. The place I work at now used to be extremely cheap and you had to make do with what you had. But now I have almost everything..but they are still cheap!
_________________
My 03 Jeep Liberty Limited:
http://www.cardomain.com/id/Saint_Anger
*Pro Car Detailer*