What distribution are you running? There are some inotify tools (incron, inotifywait) that make this very trivial, but they require a recent distribution (at least kernel 2.6.13, preferably kernel 2.6.16 or later).
The incron daemon is like cron, except it runs jobs based on filesystem events. You can then run inotifywait to wait until the file is closed, at which point you can safely copy the file. More details here