It's a hard one. I dislike the 'honest' approach as I hate the thought of hurting someone's feelings, but it's not a workable situation for you. I think you will just have to bite the bullet and risk offending...

FWIW, my MIL has started her drop in's again after years of not doing it. Problem is, she lives 45 mins away, so it's obviously well planned. We've NEVER put her off if she asks to visit, but when she just pops in, it's ALWAYS a bad time. We've done the 'we're just on our way out' thing before, but that's hard when it's nap time. We've also been guilty of hiding! If we try and plan a time, SHE'S always too busy or not coming this way, but she can't just phone first....

I think the best thing to do is plan a time, even if it changes each week. If she just wants a whinge, she may be lonely and it'd be nice for her to think you're making time especially for her. But Myturn is right, you can't take responsibility for how she reacts, as long as you're polite, that's as much as you can do. GL