You could try to use your sprites as textures for meshes and make 3D collision detections. Your textured meshes could be as high and as wide as your sprites, the depth minimal. It should also be able to make the not-textured faces of the meshes transparent.
You could move the meshes instead of the sprites.
Another way to do it is using bounding boxes for 3D models. The disadvantages of this method are that you probably have to build the bounding boxes yourself for each 3D model and compare the coordinates of all objects that may collide. In this case the depth of a sprite is 0 so it is defined by f(Sprite)->Sprite(x_min, y_min, x_max, y_max, z_abs), as long as it is parellel to the z axis. This is also legal, if the sprite is parallel to the x or y axis, in these cases x respectively y would be just one value (x_abs or y_abs).
Casting, the art of manipulation; further information every day in TV.