Think I might be onto something here, it seems that any items a user has made will be a member of a layer, default or otherwise. So I got it working by running set intersection on all user made nodes, and top level dags in scene.
import pymel.core as pm
def layerMembers():
""" List all items which are members of a layer. """
# Get all layers, and make an empty list to store their members.
layers = pm.lsThroughFilter('layersFilter')
members = list()
for layer in layers:
members += layer.listMembers()
return members
print(set(layerMembers()) & set(pm.ls(assemblies=True)))