The only complication that I can see is this. If the file to be downloaded is in a format that the client's browser has been configured to understand, the browser will open/display the file rather than downloading it.
For example, if you are trying to download a .txt file, the default action will be for the browser to display the file rather than prompting for a "Save" location.
One common way around this is to zip the file and link to the zipfile. The browser will then, most likely, open the "Save As" dialog box as required, but the client will be saving the zipped file rather than the original. Anyway, this workaround will be defeated once a zip plugin becomes standard fare for browsers.
I'm away from my php environment, so I can't experiment, but I would be willing to bet that there is a way of hardcoding the headers so that the client's browser doesn't recognise the .txt file and opens a "Save As" dialog box in desperation.
Another avenue that might be worth exploring is using javascript to hijack the left-click event on the page, and hardwiring that to the browser's "Save Target As" function.
Using either of these two methods, however, involves bending the standard web interface. Your visitors may not thank you for that. Ultimately, you may be better of showing them how to right-click and select "Save Target As".
Just some opinions... they are worth exactly what you think they are. 🙂
Jack