Sure. The real question is why you'd want to do this. I'm going to assume this is for education only. In reality, whatever this could be used for is probably better done explicitly (i.e. not using a metaclass and adding @classmethod).
I'm aware of two options: A custom namespace for the class definition, and post-processing in __new__. The first is quite cool and actually unavoidable for some cases (e.g. remembering the order of method definitions), but the latter is simpler, more flexible, can't accidentally break multiple assignments to the same name, and is available in Python 2. For your purpose, this rules out the former, but I'll leave it in for everyone who can use Python 3.
To supply a custom namespace, you have to define __prepare__ in the metaclass and return a dictionary-like object (Ferdinand Beyer noted in a comment: the mapping interface as defined in collections is sufficent). In this case, the dictionary should override __setitem__ to check if the value is callable, and if so, wrap it in classmethod prior to storing it. I owe a lot to the comments below, they vastly improved the code below. Ferdinand Beyer notices that callable(classmethod(...)) is false, and agf pointed out inconsistencies with @classmethod and Python 3 compatability.
import types
# Either this, in a dictionary class instanciated in __prepare__
# Again, Python 3 only
def __setitem__(self, name, value):
if isinstance(value, types.FunctionType):
value = classmethod(value)
super().__setitem__(name, value)
# __prepare__ would be: return AutomaticClassMethodNamespace() or something
# Or this in the metaclass
def __new__(mcls, clsname, bases, ns):
for name, value in ns.items():
if isinstance(value, types.FunctionType):
ns[name] = classmethod(value)
# Any other metaclass behaviour