"If he'd done that at my house I'd have passed him the cat"
I personally swear like a sailor. I do it at home with DH. I do it with my sister. With certain friends. I even do it at work with my cohorts (who also swear). I don't with people I don't know, people I know are bothered by it, or people I'm trying to show respect to (regardless of whether they swear in front of me or not). I try to err on the side of politeness.
As far as the topic changing thing, I also think that it's situational. If someone can't politely leave and you can tell they're uncomfortable, it's best to change the subject. And if they request it, you should definitely change it. Is it annoying and sometimes frivolous to request someone to change a subject....definitely. But you should do it anyway, to be respectful.
In the case of the OPs example, if she was making a big deal about it, I would have honored her request to be polite, but would have been inwardly annoyed by it. And I agree sometimes, you need to pull out the TMI card! I have a coworker who has no filter in her brain as to what is appropriate to discuss in mixed company at work. I have often told her "I'M EATING FOR GOD'S SAKE!" or "I don't think this is appropriate".
I try to do it with a sense of humor, and think that is probably anyone's best course of action. If something is making you uncomfortable conversationally and you can't politely remove yourself, just kindly and lightheartedly request that you talk about something else.
Now, as far as swearing in your own home no matter what, I don't think that that's the best attitude. Anyone who comes to your home is a guest, and you should do your best to make them comfortable. If that means you shouldn't swear while they're there, so be it. And if something slips out I think the uncomfortable person should just let it go. The polite thing works both ways!