I'm interested in this solution as well. Besides the attempts listed above, I tried checking the extensions in during my extension startup event and saving the Normal.mxt file after checking in the extensions. I temporarily added a bunch of message boxes to my script so I could track what was happening. (I will remove them once my script is running correctly). My message boxes showed the extensions are being checked in, but that the MapDocument.save() is not taking place.
"""Implementation for MyAddIn_addin.ExtensionCheck (Extension)"""
# For performance considerations, please remove all unused methods in this class.
self.enabled = True
from arcpy.mapping import MapDocument
mx = MapDocument(r'C:\Users\mmaguire\AppData\Roaming\ESRI\Desktop10.1\ArcMap\Templates\Normal.mxt')
pythonaddins.MessageBox('Map document is: ' + mx.filePath, 'Map Document', 0)
if arcpy.CheckExtension("3D") == "Available":
pythonaddins.MessageBox('Returned 3D extension', '3D', 0)
if arcpy.CheckExtension("Spatial") == "Available":
pythonaddins.MessageBox('Returned Spatial extension', 'Spatial', 0)
pythonaddins.MessageBox('Extension check started', 'Extension Check', 0) #Shows up
pythonaddins.MessageBox('Normal.mxt Saved', 'Extension Check', 0) #Never appears