I have a friend who likes to use metaclasses, and regularly offers them as a solution.
I am of the mind that you almost never need to use metaclasses. Why? because I figure if you are doing something like that to a class, you should probably be doing it to an object. And a small redesign/refactor is in order.
Being able to use metaclasses has caused a lot of people in a lot of places to use classes as some kind of second rate object, which just seems disastrous to me. Is programming to be replaced by meta-programming? The addition of class decorators has unfortunately made it even more acceptable.
So please, I am desperate to know your valid (concrete) use-cases for metaclasses in Python. Or to be enlightened as to why mutating classes is better than mutating objects, sometimes.
I will start:

Sometimes when using a third-party
  library it is useful to be able to
  mutate the class in a certain way.

(This is the only case I can think of, and it's not concrete)
Let's start with Tim Peter's classic quote:

Metaclasses are deeper magic than 99%
  of users should ever worry about. If
  you wonder whether you need them, you
  don't (the people who actually need
  them know with certainty that they
  need them, and don't need an
  explanation about why). Tim Peters
  (c.l.p post 2002-12-22)

Having said that, I have (periodically) run across true uses of metaclasses. The one that comes to mind is in Django where all of your models inherit from models.Model. models.Model, in turn, does some serious magic to wrap your DB models with Django's ORM goodness. That magic happens by way of metaclasses. It creates all manner of exception classes, manager classes, etc. etc.
See django/db/models/base.py, class ModelBase() for the beginning of the story.
What are some (concrete) use-cases for metaclasses?