I bought my frontier used and the headliner had smoke brown/yellow stains. I was wiping the inside down with some armor-all wipes and tried to wipe a spot on the headliner. The stain came right off. I got all the stains out and the wipes had febreeze in them so it left a clean smell. I never thought to take pics. But it worked for me. Just wanted to pass the word on.
I know this thread is old, but for the sake of others with this issue, I've also had success in simply vacuuming my headliner on other vehicles I've owned. It take a while to do, but using a vacuum hose with a horizontal attachment seems to do the trick just fine. Make sure you do the entire headliner, other wise some parts will end up looking cleaner than others.
I have my own auto detailing business. Get some Folex from Lowes. You can find it in the cleaning supplies in the carpet section. Spray and wipe. I use it on headliners all the time, as well as other upholstery. Its only like $8 for a 32oz bottle I believe
I had the same problem a while back, I used a microfiber cloth an wiped it out with upholstery cleaner. For grease stains, a water and vinegar mixture actually does the trick to clean it out. I sprayed on a freshener and let some air in to get rid of any smell. I vacuum my headliner from time to time along with the rest of the interior to maintain it.