‘Have’ is more common.
But ‘Has’ doesn’t sound horrible. It would be interpreted by a native speaker as
(A period of ) three years has passed, with the (a period of) being implied.
More colloquial is:
The last time I saw you was three years ago.
The last time we saw each other was three years ago.
Your phrasing gives the statement a somewhat dramatic tone.