How to include Email address checking in event registration page to avoid multiple contacts entries?
you mean asking the user to type twice their email and check it's the same?

I can't find it right now, but recall reading that it wasn't that optimal as a UX (ie. people are not good enough to type without typo, but skilled enough to do a copy/paste of the email with typo ;)

One more elegant solution seem to compare the email against a set of existing common domain names (eg yahoo.com, gmail.com) and suggest a fix if the error is on the domain name, eg. if I type "xavier@gmal.com", suggesting "did you mean xavier@gmail.com"?

you could write an extension that add this feature by using this library https://github.com/Kicksend/mailcheck (I used it for a drupal extension long time ago, worked well, and shouldn't be too complicated to write a native civicrm one)