Lots of people think it's a very hard problem. In fact, complete GC is unfeasible, but simple solutions can collect most garbage. Distributed systems are inherently asynchronous. A message only tells you about the past of the sender. There is no single global order of events.
Failures do occur.
Machines crash, processes get into infinite loops. In the Internet remote sites often appear unreachable. If the data you are copying is the GC status, then you may be deciding to reclaim an object based on incorrect information. You will find general algorithms in the distributed systems literature that appear to solve the above problems, called distributed snapshots, distributed transactions, etc. They will work but they are very costly and they don't scale.