Using source/target in the hash function works so long as the hash on them is symmetric, because for undirected and bidirectional graphs you can have the same edge e represented as (u, v) or (v, u), depending on where you get it. Other than that restriction, you should be fine using source/target: it's okay to have two edges hash to the same thing, so long as your equality function compares the edge descriptors directly instead of using source/target.
I dug into the boost graph source for some more time, and I have to admit that I'm far from understanding the big connections going on. I wondered, though, what m_eproperty of the edge_desc_impl is. It is used in the operator== of the edge_desc_impl (I checked this after reading your comment about the equality function). I could not figure out yet what exactly this is. My assumption is that it has something to do with the address of the property storage of the edge? Well, the big question for me is could I use this as my hash, too? Thanks again, Wolfram