As a follow-up...
It might be possible to get suggestions as to the identity of the join field by using some dictionaries. This would look at a row in each feature to see if there are multiple fields with the same value. Just a thought...
for f in arcpy.mapping.ListLayers(mxd):
fields = []
field_info = arcpy.Describe(f).fieldInfo
for i in xrange(0,field_info.count):
fields.append(field_info.getfieldname(i))
with arcpy.da.SearchCursor(f, fields) as cursor:
values = cursor.next()
joinDict = dict(zip(fields, values))
revDict = {}
for key, value in joinDict.items():
revDict.setdefault(value, set()).add(key)
join_fields = [values for key, values in revDict.items() if len(values) > 1]
field_value = [key for key, values in revDict.items() if len(values) > 1]
print "Possible joins: {}".format(join_fields)
print "Field value used: {}".format(field_value)