yo creo que es un problema de profundidad de directorios,me explico
si el fichero *.php donde tienes ese codigo, esta , por ejemplo en la carpeta
http://misitio.com/includes/fichero.php
el cual, llamas desde, por ejemplo, este otro:
http://misitio.com/index.php
y siguiendo con las hipotesis, tienes esta estructura de directorios en el servidor
/
---> sistema/
------> administracion/
---------> computo/
------------> servtec/
---------------> imagenes/
------------------> ".$_POST['factura'].$_POST['proveedor'].".jpg";
entondes, al poner un echo "<img .....>" la imagen se mostrara, ya que ese echo, se llama en realidad desde index.php y no desde el include
en cambio, al hacer el file_exists desde fichero.php, se comprueba que exista el directorio:
http://misitio.com/includes/sistema/administracion.......
Espero que entiendas lo que quiero explicar, y puedas comprobarlo, yo creo que el fallo viene por ahi