How to find and eliminate materials that aren't disappearing with orphan data purge
On a peer material basis.


Try bpy.data.materials['nameofthematerial'].user_clear()
Reload the file.
If still there,

for i in bpy.data.scenes['Scene'].objects.items():
    for j in i[1].material_slots: 
        if j.name == 'nameofthematerial':
            print(i[1].name)


Will give you a list of the objects in the scene that the material is connected to.
Do you have only one scene ? If no you can repeat the operation for each scene, if yes you might find an elegant solution by including another for that will loop through the scenes, but hey got to keep some handwork and this might be futile unless you have ~10 or more scenes.