Hi,
I am having good progress with the ctypes bindings to ODE, i haven't tested everything yet, but so far everything is working.  For the most part its just like PyODE, but there are still some points where you have to directly deal with ctypes.

http://pyppet.blogspot.com/2011/05/ode-ctypes-in-blender.html

http://rpythonic.googlecode.com/files/Active-Physics-Blender-release1.zip

Quick Example:

ode.InitODE()
print( 'ode init ok' )

world = ode.WorldCreate()
print( dir(world) )
print( 'angular damping default', world.GetAngularDamping() )
print( 'quickstep default', world.GetQuickStepNumIterations() )
world.SetQuickStepNumIterations(24)
world.SetGravity( 0, 0, -.9 )

space = ode.SimpleSpaceCreate()
print( 'space', space )

bodies = []
for i in range(200):
body = ode.BodyCreate( world )
bodies.append( body )
body.SetPosition( random(), random(), random() )
mass = ode.Mass() # no function to create a mass?
mass.SetSphere( 0.1+random(), 0.5) # density, radius
body.SetMass( mass )

start = time.time()
for i in range(500):
world.QuickStep( 1.1 )
print( 'frame', i )
for b in bodies:
b.AddForce(0.1, .0, .0)
x,y,z = b.GetPosition()
print(x,y,z)
print('time', time.time()-start)

ode.CloseODE()