This is what I did when I baught a car from a previous smoker.
I used FOLEX (you can pick it up target or wherever) on all the cloth services, it's non toxic and works pretty well and it's only like $6 dollars. I sprayed the area really well and used an interior scrub brush (baught from wal-mart in the auto department) and scrubbed like crazy. Then, while the interior was still wet, I used the big vaccume at the car wash and vaccumed the interior. Then repeat (you may have to do this a couple times to really get the smell out, it took me about 2-3weeks to get it to where i liked it). But Folex is safe on most on cloth surfaces. Then after that, I cleaned the headliner with some vinyl cleaner (mine was not cloth). Then make sure to clean the interior windows REALLY WELL, they can hold a lot of smoke 'smell' in. Then make sure to clean all plastic surfaces with a plastic cleaner/protector. If the car still has an ash tray or a couple of ash trays, make sure to REALLY CLEAN THOSE ( i just through mine out). Then you want to spray some OZIUM inside the car (obviously with you outside the car) and close the doors and let it sit over night. These steps are what worked for me. I did all these steps at least 1-2X week for about 3-4 weeks and the car smelled great. be carefull of products that claim to 'get rid' of the smell and just end up covering them up for a day. I wasted a lot of pocket money on these type of products. You have to put a little elbow grease to get rid of the smell.
Short version:
Folex
Ozium
plastic cleaner
elbow grease
Air freshener