I'm the doom and gloom merchant regarding the issue,
The headlining in a modern car is perforated and underneath this cosmetic layer you will find fibrous insulation material.
If you want to completely remove the smell then unfortunately that insulation material will need replacing
You cannot easily get to it, you cannot clean it, but.............................
Have you noticed how we adapt and get used to obnoxious smells? If you go somewhere that really stinks; and then stay there for a length of time, then this smell will appear to disappear, but has it? Or have you got used to the pong?
Most new owners of cars that have been owned by a smoker tend to believe that after a week, or maybe a month, they have got rid of the smell, I wonder if the smell has gone, or have they got accustomed to this aroma?
Sorry to be so negative, but the most expensive option might be the best option. (replacing the headlining and insulation material)
Filters are relatively easy to clean, carpets are easily removed and will absorb the smell from a carpet shampoo. Cleaning the perforated headlining is extremely difficult, because the holes all contain the nicotine stains and there are millions of the blighter's (holes) If you cannot clean these tiny holes, then you are not getting rid of the smell, this oil will remain and it stinks!
Regards
John