There are some ways to do what you want. For some simple examples:http://matplotlib.sourceforge.net/examples/mplot3d/polys3d_demo.html
These examples show how you can take a normal 2D matplotlib patch and convert it into a 3D object.
Unfortunately, I do not have any example on hand on how to work with the 3D versions of the objects directly, but that is possible. You can find the classes in the 'mpl_toolkits.mplot3d.art3d' module. Do keep in mind that mplot3d is currently only meant for simple 3D plots, as it can not properly lay out a 3D environment (intersecting polygons, for example will look Escher-like). As for backends, the only thing that mplot3d requires is that it uses an Agg-based backend so that it can perform arbitrary rotation of text elements (for axes labels).
I hope this helps a bit.