Justamente en php.net tienes un ejemplo. El caso es que tienes que indicar a tu cliente (navegador) que los datos que vas a enviarles son para forzar la descarga vía cabeceras HTTP:
header()
www.php.net/header
Una vez tengas esas cabeceras HTTP (para indicar que lo que envias es un "attachment") .. lee tu archivo y entregalo al buffer de salida de PHP con:
readfile()
www.php.net/readfile
Un saludo,