The C-MOVE SCP should wait until the C-STORE sub operations are completed before responding with the final C-MOVE-RSP. Although it doesn't explicitly say this in Part 4 of the DICOM Standard, it is implied by statements like this saying the final status is sent after the completion of the sub operations:
"When the number of Remaining sub-operations reaches zero, the SCP shall generate a final response with a status equal to Success, Warning, Failure, or Refused. This response shall indicate the number of Completed sub-operations, the number of Failed sub-operations, and the number of sub-operations with warning Status."
Perhaps the PACS you're having trouble with has an architecture where it queues up the requests, and perhaps after it ensures that the requests are queued up, it returns, but who knows.
In any case, as to how to determine when everything is done, is the count returned in the number of successful operations correct? You could correlate this count with the number of instances received by the C-STORE-SCP and ensure the count is equal to know when everything really is done. This doesn't work if your C-MOVE destination is a 3rd party server, but if you control the C-MOVE-SCU and the C-STORE-SCP, it should work. Alternately, if your destination C-STORE-SCP also is a C-FIND-SCP, you could query it to check the instance count for the study being moved (ie, check the Number of Study Related Instances tag) to ensure the counts match.