callable

まぁ、コメントに書いた通り呼び出し可能かどうかは callable を使えばわかるんですけど。
で、hasattr(obj, '__call__') でも条件を満たせるかといえばなぜか classic class (new-style でない class) で挙動が異なる。

def f(): pass
class C1: pass
class C2(object): pass
class C3(object):
    def __call__(self): pass

def my_callable(obj):
    return hasattr(obj, '__call__')

for obj in (f, C1, C2, C3(), lambda x: x):
    print my_callable(obj), callable(obj)
True True
False True
True True
True True
True True
True True

むぅ。