To be honest, I've never tried this with the Shape class, but it seemed like a good idea..
Shape is actually an interface, so you'd probably want to use Polygon.
You set up a Polygon with an array of points - actually two arrays, one for x points and one for y (and a number - how many points there are). For example, to set up a square, it would be something like
int[] xPoints = new int{0, 10, 10, 0};
int[] yPoints = new int{10, 10, 0, 0};
Polygon theSquare = new Polygon( xPoints, yPoints, 4 );
NOTE: I haven't tried this, so it might not work. You might have to connect up the points on the polygon, for example.
So if you set up a polygon with the shape of the sprite you're using, this can help you with collision detection (you'd just have to experiment to find the right shape, or draw it on squared paper or something).
The trouble is, there is no method to find if part of a Shape is inside a Shape - you can find if a Point is inside a Shape. So I don't think there is an easy way to do it if both objects are using aShape for collision detection.
What you could do is get each point of the shape and
test if that's inside the other Shape - if you have a lot of space between points this won't work, but if the sprites are fairly small it should work OK.
Got to go now, lunch break over, but shout if u need more help.