A quick and dirty solution would be to use a scene_update_post
handler.
Event handler access in Blender.
import bpy
def my_handler(scene):
cursorLoc = bpy.context.scene.cursor_location
# do something
print(cursorLoc)
bpy.app.handlers.scene_update_post.append(my_handler)
Run the script once, then your function will be called as soon as the scene updates.
This is highly inefficient and will affect the performance depending on the design of the script. It provides an easy solution though and Blender was always fast enough for me to not notice a difference.