
Presuming you have a product vision of some sort, "story storming" (brainstorming about stories) is a good way to build a backlog of things people want. The more cross-functional participants involved the better. It will likely start as "just a bunch of stories", but you are just starting and you need something to work with (right?). Progressive refinement is a good strategy for evolving that sack of stories into a worthy product backlog.
Then your stakeholders (from all groups) and Product Owner can start to prioritize which functionality should be completed first. You can think of your backlog as being in three segments: actionable, emerging and stuff (those terms may be mine but the idea has been around). Stories that clearly need to be done first need to be fleshed out into an actionable state -- explained to a level that successful implementation is possible (however you define "done"). You want want to spend the time to get the entire backlog in that shape at once -- it's not necessary and you have enough to work on.
Emerging stories are the next tier of requirements and need to be moved into an actionable state before the current set of actionable stories is exhausted. Of course, all the time, people are adding things to the backlog and changing priorities of items, so backlog grooming is a good practice to get into. The other stories survived to make the backlog but may or may not ever get shipped. Don't waste time on them until they start to look more important.
Mike Cohn did a nice piece on progressive refinement of your product backlog on developerWorks very recently: http://www.ibm.com/developerworks/rational/library/user-stories-product-...
I have a piece linked in the Resources section on how to cutomize Rational Team Concert to help manage this process. http://www.ibm.com/developerworks/rational/library/sprint-with-rational-...