You probably want to check that the mime type, extension and the true type of the file are all in agreement, and the file is a valid image.
Telling if a file is a valid image isn't terribly straightforward, particularly if the image is too big to fit in memory.
You can of course use getimagesize() to tell you the dimensions and format, but it won't tell you if the file is completely well-formed. For that, you need to load it in entirely, with e.g. imagecreatefrom* functions.
These will generally give a E_WARNING if there is something wrong with the image, and/or may fail to load the image entirely. You can catch this and behave accordingly.
Some malware comes in the form of a malformed image which breaks the web browser and subverts it into doing something malicious.
One way of defending against this is loading the file into a temporary file on your server and having an on-access virus scanner installed - which will hopefully immediately scan the file before PHP is allowed to read it again, and return an error code (e.g. access denied) if it's found to contain a virus. Consult your server AV software developer documentation for more details.
Mark