Hi, if you are looking for BDD (also known as Acceptance Test Driven Development) you might be willing to start writing Acceptance Tests early enough before the Sprint Planning takes place. Some other "more agile" approaches tend to postpone this to the last responsible moment, and I have been coaching a couple of teams where the Acceptance Criteria gets refined over time also during the Sprint.
The "Testers" of the Development Team works closely with the Product Owner during the preparation of the Backlog for the next Sprint (it is called look-ahead) and also during the current sprint, they enrich the acceptance criteria when they see fit in accordance with the PO.
It pretty much depends also on how you do execute those tests... if you are able to automate, than things are much more clear :-) We do make extensive usage of Cucumber or Fitnesse to automate acceptance tests, and as you would do with TDD (without the A) you would try to do that before a commitment takes place, at least at a basic level (you do not need all of them to be defined - remember it shouldn't look like a contract).
The BDD goal is to drive the development of Software from a behavioral perspective, that should give you a pretty clear "way" on how and when to write Acceptance Criteria. I found them very useful in combination with the INVEST checklist for User Stories, and the definition of Ready for you Backlog.
HTH
ANdreaT