Ich hätte da eine Lösung, aber die ist ein wenig unschön.
Füg in deine Seite ein verstecktes Frame ein (breite/höhe = 0%), oder
besser noch ein iframe ein, dessen location.href du dann mit Javascript auf die Datei setzt, die zu downloaden wäre.
Das funktioniert mit allen Dateien gut, die der Browser nicht anzeigen kann. Wenn du so Dateien wie HTML, JPG usw. übertragen willst, versuchs mal mit dieser PHP-Seite:
//Der gewünschte Dateinamen wird über $file übertragen
header("Content-type: no/idea");
$name = explode("/",$file);
$name = '"'.addslashes($name[count($name)-1]).'"';
header("Content-Disposition: attachment; filename=$name");
readfile($file);
Aber ACHTUNG!!: Füg noch eine Kontrolle für den Dateinamen dazu, sonst kann man über dieses Script auch Dateien downloaden, die du im Server gesperrt hast.