Question: I want to know which add-ons in Blender 2.79 are enabled by me.

Answer: 
Blender's Python API allows to get the currently enabled add-ons, without any differentiation of what/who enabled them. Therefore it's not possible to distinguish between add-ons that have been enabled by default, by the user or by another add-on/script. You may however compare the currently active add-ons to the ones that are known to be enabled by default and only use those that are not it the default list.

**Blender 2.79**

The enabled add-ons can be access through the user preferences [`bpy.context.user_preferences.addons`](https://docs.blender.org/api/2.79/bpy.types.UserPreferences.html#bpy.types.UserPreferences.addons).

```
import bpy

for addon in bpy.context.user_preferences.addons:
    print(addon.module)

```

The add-ons that are enabled by default are:

```
io_scene_3ds
io_scene_fbx
io_anim_bvh
io_mesh_ply
io_scene_obj
io_scene_x3d
io_mesh_stl
io_mesh_uv_layout
io_curve_svg
cycles

```

Therefore a solution that excludes them could look like this:

```
import bpy

default_addons = {"io_scene_3ds",
                  "io_scene_fbx",
                  "io_anim_bvh",
                  "io_mesh_ply",
                  "io_scene_obj",
                  "io_scene_x3d",
                  "io_mesh_stl",
                  "io_mesh_uv_layout",
                  "io_curve_svg",
                  "cycles"}

for addon in bpy.context.user_preferences.addons:
    if addon.module not in default_addons:
        print(addon.module)

```

**Blender 2.8x**

The enabled add-ons can be access through the preferences [`bpy.context.preferences.addons`](https://docs.blender.org/api/current/bpy.types.Preferences.html#bpy.types.Preferences.addons).

```
import bpy

for addon in bpy.context.preferences.addons:
    print(addon.module)

```

The add-ons that are enabled by default are:

```
io_anim_bvh
io_curve_svg
io_mesh_ply
io_mesh_stl
io_mesh_uv_layout
io_scene_fbx
io_scene_gltf2
io_scene_obj
io_scene_x3d
cycles

```

Therefore a solution that excludes them could look like this:

```
import bpy

default_addons = {"io_anim_bvh",
                  "io_curve_svg",
                  "io_mesh_ply",
                  "io_mesh_stl",
                  "io_mesh_uv_layout",
                  "io_scene_fbx",
                  "io_scene_gltf2",
                  "io_scene_obj",
                  "io_scene_x3d",
                  "cycles"}

for addon in bpy.context.preferences.addons:
    if addon.module not in default_addons:
        print(addon.module)

```
Enabled addons list for blender 2.79 in human-readable format:

```
enablist = [addon.module for addon in bpy.context.user_preferences.addons]
for addon in addon_utils.modules():
    if addon.__name__ in enablist:
        print ('{name} {ver} {mod}'.format(
            mod = addon.__name__,
            name = addon.bl_info['name'],
            ver = ''.join([str(v) + '.' for v in addon.bl_info['version']]).rstrip('.')))

```

Update for 3.0+:

```py
import addon_utils
enablist = [addon.module for addon in bpy.context.preferences.addons]
for addon in addon_utils.modules():
    if addon.__name__ in enablist:
        print ('{name} {ver} {mod}'.format(
            mod = addon.__name__,
            name = addon.bl_info['name'],
            ver = ''.join([str(v) + '.' for v in addon.bl_info['version']]).rstrip('.'))) if 'version' in addon.bl_info else None

```