Not sure if this works for you but maybe it helps. Have a look at the new Core Workflow feature in Version 5. It has an option to hide certain fields based on other values. In my example I created an object which is set by a trigger.
As long as the custom object says “no”, the owner is hidden. When a comment is left, a trigger sets this value to “yes” and the core workflows makes sure that the owner fields is now shown.
The agent can now change the owner. The change of owner will trigger a change of the custom object which will then be set to “no” and this again sets the owner field to hidden.