The screencast explains what I try to do very well.
https://drive.google.com/file/d/0Byzv_NlyKp_2Sk5NZEREcE5YZG8/view

Below is my code:

Idea is press a button
empty is created
user jumps right into translation mode
with CTRL you can snap to an object vertex
with LMB user places new empty
3D cursor will be set to newly positioned empty
empty will be deleted

Everything works right besides the last to steps


It seems to me that after I start the transformation, while still being in transformation, Blender already executed the following steps. So I think I need some sort of a break/pause after the transformation and when I LBM the script execution continues.


    bl_info = {
        "name": "Fullscreen Modeling Toolbox",
        "author": "Claas Kuhnen",
        "version": (1, 0),
        "blender": (2, 75, 0),
        "location": "View3D > Tools Shelf > Modeling Toolbox",
        "description": "Fullscreen Modeling with Access to Object Properties",
        "warning": "Beta - Concepy Study",
        "category": "User Interface",
    }    
    
    import bpy
    from bpy.types import Menu, Panel, Operator, UIList
    from rna_prop_ui import PropertyPanel
    from bl_ui.properties_data_modifier import DATA_PT_modifiers
    from bpy.props import *
    
    ########################
    # Operator Definitions #
    ########################
    
    # Command Snap Origin 
        
    class SnapOriginObject(bpy.types.Operator):
        bl_idname = "snap.originobject"
        bl_label = "Snap Object Origin"
        bl_options = {'REGISTER'}
            
        def execute(self, context):
           
            bpy.ops.object.select_all(action='DESELECT')       
            bpy.ops.object.empty_add()       
            bpy.ops.transform.translate('INVOKE_DEFAULT')
            bpy.ops.view3d.snap_cursor_to_selected()
            bpy.ops.object.delete()
    
            return{'FINISHED'}
       
    
    ########################
    # Interface Definition #
    ########################
    
    # DATA 
    class ObjectData(bpy.types.Panel):
        bl_label = "Object + Mesh Data"
        bl_idname = "ObjectData"
        bl_space_type = 'VIEW_3D'
        bl_region_type = 'TOOLS'
        bl_category = "Modeling Toolbox"
    
        def draw(self, context):
            layout = self.layout
    
            obj = context.object
      
            row = layout.row()
            self.layout.operator("snap.originobject")
    
    def register(): bpy.utils.register_module(__name__)
    def unregister(): bpy.utils.unregister_module(__name__)
    
     
    if __name__ == "__main__":
        register()