Apologies, but I'm not certain I follow your threading model here. I am assuming you have implemented the threading model you describe below in your implementation of the operation and are not relying on CXF for this?
The one thing to watch out for when you are using MTOM attachments is to be sure that you close any input streams that you get. CXF will keep a count of all input streams it hands out, and will decrease this when stream is closed. When the count is zero it then knows the file can be deleted. I'm not sure if this could be causing any problems you are seeing, but it's a common mistake.