My suggestion would be to accept that, on what I would consider degenerate inputs, == runs in quadratic time [1]. If for whatever reason that is unacceptable in an application: the user should switch to a different type of priority queue that supports lookup queries so that one can keep elements with the same key in whatever particular order is desired. (I.e. if you somehow care enough that == should maintain the insertion order, picking an implementation that cannot reasonably maintain that order distinguished seems like a bad choice in DS in the first place).
I think having the Ord a constraint is bad since it restricts which type of elements one can store in the priority queue. It would seem to me there are much more types that have a reasonable Eq instance but no Ord instance. Admittedly, I’m having trouble producing concrete examples at the moment.
[1] Edit: Maybe to stress: in, “normal” operations where each key appears at most once (or even at most sqrt(log n)) times) == would just run in O(n log n) time as expected.
Edit 2: Actually, even if a few keys appears at most sqrt(n) times that is fine. I.e. as long as sum_i^k O(n_i^2) <= O(n log n) things are fine (where k is the number of unique keys and n_i is the number of keys equal to key i)