Anyone can change the tags on a topic. Tagging is crowd-based. Don't like the tags on a topic? Add your own. Enough people tag with a particular word or phrase, it'll stick. Simple majority rules. Mods don't have any more power in this than anyone else.
There's a logistical problem with that, but not one that can't be fixed. It's a problem of inertia.
If three people have already tagged a thread "Republicur" or "Libtard", then to re-tag at as something like "Politics", I have to organize three people to tag the thread "Politics". Otherwise, the three of us who would like to see the tags change to something sane and relevant divide our votes. One tags the thread "Politics", another tags it "Economy", and so on. Meanwhile fans of "Republicur" continue to vote for "Republicur" and it becomes more entrenched. It is easier for them to coordinate their support than it is for the rest of us to coordinate our opposition. They vote for it because it's there, basically, whereas alternatives aren't.
One way to counter this would be to declare what tags you're placing (in sort of a small-font footnote to your post, perhaps -- not in a garish way that mars the flow of debate in the thread). Then others could pick up on your idea and declare what tags they're placing. The only way to vote "Libtard" out of office is to communicate about what you want to replace him with.