The current backend name is accessible via
>>> import matplotlib.pyplot as plt
You can access the lists
matplotlib.rcsetup.interactive_bk matplotlib.rcsetup.non_interactive_bk matplotlib.rcsetup.all_backends
the third being the concatenation of the former two. If I read the source code correctly, those lists are hard-coded though, and don't tell you what backends are actually usable. There is also
but this also only checks against the hard-coded list.