How can I move a PoseBone to a specific world space position?
Use Object.convert_space

There is a handy method on the object to do this for you.  Example below, adds an empty at each pose bone (to test pose to world) and then uses this to convert back to pose and checks against bones matrix.

import bpy
context = bpy.context
ob = context.object
scene = context.scene

for pb in ob.pose.bones:
    # convert from pose to world
    mw = ob.convert_space(pose_bone=pb, 
            matrix=pb.matrix, 
            from_space='POSE', 
            to_space='WORLD')
    mt = bpy.data.objects.new(pb.name, None)
    mt.name = pb.name
    mt.matrix_world = mw
    scene.objects.link(mt)
    # now back from world to pose
    mp = ob.convert_space(pose_bone=pb,
            matrix=mw,
            from_space = 'WORLD',
            to_space = 'POSE')

    print("Pose bone matrix", pb.matrix)
    print("Matrix World to pb.matrix", mp)
    print((mp - pb.matrix)) # zero matrix if all is good


To move a bone to the cursor

pb = ob.pose.bones.get("root")
mw = ob.convert_space(pose_bone=pb, 
        matrix=pb.matrix, 
        from_space='POSE', 
        to_space='WORLD')
mw.translation = scene.cursor_location
pb.matrix = ob.convert_space(pose_bone=pb, 
        matrix=mw, 
        from_space='WORLD', 
        to_space='POSE')


Note: If the pose bone has a joined parent bone this may not work as expected as it wont break that bond.

Links

How can I manually calculate bpy.types.PoseBone.matrix using Blender&#39;s Python API?