~だったかもしれない、~の可能性があったかもしれない、~が起こっていたのに、
すべて仮定法を使います。
ここでは~したかもということなので、完了形のhaveを使います。
起こるかも、起こるだろう、起こるのでは、であればそのまま、might, could, wouldとなり、haveは不要です。
It might have happened. 起こったかもしれない。(実際は起こらなかった)
It could have happened. 起こる可能性があったのに(実際は起こらなかった)
It would have happened. 起こっただろうに(実際は起こらなかった)