I had to solve this same thing when I wanted to watch for new apps added to the Applications folder—Keyboard Maestro's watched folder trigger would fire long before the app was finished copying, because the app bundle is created first, which Keyboard Maestro sees as "done," but all the parts of the bundle were still copying.
I went through a few iterations of solutions, but in the end, I wound up using a loop like this:
set new_size to 0
execute actions until conditions met:
set old_size = new_size
pause briefly (under a second, in my use case)
get new_size
until: new_size = old_size
For the get new size
step, though, I didn't use Keyboard Maestro's built-in function, as it wasn't clear if it updated rapidly enough. Instead, I used a shell command:
du -s /full/path/to/file.jpg | egrep -Eo '\d+\t'
This returns the size in bytes, and it's updated instantly each time you run it. This lets me make the pause very brief, so there's very little lag between the file copy being done and when the macro can proceed. Here's the final version as I used in my AppWatcher macro:
-rob.