Lo primero, es que no puedes confiar plenamente en el valor de $_FILES['imagen']['type'], porque es un dato enviado por el navegador y, por tanto, manipulable.
En todo caso, una solución de mucho menor riesgo es verificar la extensión.
Lee esto:
http://www.forosdelweb.com/f18/aport...8/#post4265376
Luego, eso de que ya no te deje cambiar la imagen por otra, debes ser más específico, si se trata de sobreescribir una imagen (mismo nombre) o actualizar la tabla.
Para sobreescribir, creo que es mejor primero eliminar el archivo existente (con unlink()) y luego usar move_uploaded_file() para evitar errores.