You can look at this as more of a "philosophical" question. Is software ever really "done"? There will be much back and forth, I don't think this question is really answerable. If you need to hand it over to someone else; then yes. Once it matches the specs that they intended for it, then I would consider it done.
If you wish to continue making changes as you come up with them; that's perfectly fine, but remember the more that codebase changes, the higher the likelihood that something can (and will) go wrong.
It's a good question and this will certainly drum up a good discussion here, I look forward to seeing what everyone else says.
bw