Well celery does have subtasks that it can wait and join on (see http://ask.github.com/celery/userguide/tasksets.html), but I suppose that the logic to do such things would have to occur within a running task as opposed to SWF where such things are handled by the platform itself.
I wonder if Celery could still use SWF as its backend in the future? Instead of having to manage your own EC2 instances and databases for the Celery daemons.