First of all, I think you want your function to return TRUE, not FALSE. That could be the entire problem right there.
Second, there's no need to do the mysql_real_escape_string BEFORE you run the checkEmail() function. Let's say that they did include some SQL injection. There's no harm in performing an eregi on dangerous code. It would just fail anyway. And besides, if the mysql_real_escape_string DID change a valid email into something screwy, then the valid email won't pass the checkEmail() test... so you really don't want to do the mysql_real_escape_string first.
Third, your eregi pattern is so picky that no SQL injection could get through. If the email DOES pass the checkEmail function, then there's really no reason to use the mysql_real_escape_string. It can't hurt to use it, it's just unnecessary.
Fourth, the ereg functions are going to go away soon. Use preg_match instead.
Fifth, your eregi pattern is not really correct.
This email is vaild but would fail your checkEmail function: obama@whitehouse.gov.us
This email is invaild but would pass your checkEmail function: bones@foobar.123
But other than that, you're on the right track.