How to invoke a dialog from a menu?
What about doing it like this ?

import bpy

class MyDialog(bpy.types.Operator):

    bl_idname = "tools.mydialog"
    bl_label = "My Dialog"

    string_prop = bpy.props.StringProperty(name="String Prop")

    def invoke(self, context, event):
        return context.window_manager.invoke_props_dialog(self)

    def execute(self, context):
        # Whatsoever needs to be done...
        return {'FINISHED'}

def my_menu_addition(self, context):
    self.layout.operator(MyDialog.bl_idname)

if __name__ == "__main__":

    bpy.utils.register_class(MyDialog)
    bpy.types.INFO_MT_file.append(my_menu_addition)