Alex,
It would seem to me that you want to set your cascade options to include the delete-orphan option. This will (supposedly) remove any objects that become unattached to anything when the relationship is removed. You should be very careful that your 'child' object is not also referenced elsewhere when you use this though...
See chapter "10.11. Transitive persistence" in this link
http://www.hibernate.org/hib_docs/v3/reference/en/html/objectstate.html
If this becomes a problem (my project is a real mass of inter-relations) it is worth remembering that datastorage is normally less of a problem than speed of response (these days). Ask yourself - if the database ends up with a bunch of orphaned records in there - does it really matter? You could always write a cleanup procedure to run once a year that uses SQL to delete any true orphans.