Hai una pagina A.php che setta una variabile di sessione. Nella pagina hai un link alla pagina B.php

esempio : <a Href='B.php?filename=file_da_downloadare.jpg'>Down load</a>

Nella pagina B.php controlli l'esistenza della variabile di sessione.
Se c'è, a secondo dell'estenzione del file invi lo header giusto con il contenuto del file. Con questo sistema puoi anche mascherare il vero percorso del file.

IMHO.