Holas:
Creo que el fallo esta en que llamas dos veces al mismo directorio
unlink("img/$id"); y
$id contiene
img/imagen.gif, por lo tanto quedaria asi;
img/img/imagen.gif.
De todas formas comprueba siempre antes que el archivo exista, para ello hay una funcion llamada
file_exists(). http://es.php.net/manual/en/function.file-exists.php
SALUDOS