It sounds like PHP may be hitting its time limit, which would cause the download to stop suddenly. This would probably happen with larger files, especially on slower Internet connections. What the timeout is set to depends on your host, although it's commenly 90 seconds.
We can try to fix this by setting an infinite time limit. At the top of the download item code, please put this:
set_time_limit(0);
And see if that fixes it.