We have a code, content and DB flow that follows a typical pattern:
Dev->Build->Staging->Prod
The kicker is that the client is editing and publishing content only in Prod.
So our current strategy is to attempt to do a full content sync Prod->Staging on a semi-regular basis and then a full sync Prod->Build/Dev on an ad-hoc basis. Doing a Prod->Build/Dev push means the environment is unusable for a period of time (at least a day).
What strategies exist to make sure your dev/test/build environments accurately match prod in terms of content and how are others managing this problem?
We are using Sitecore 6.1 as the CMS system
I regularly use SDL Tridion, and a typical scenario there is to have Dev, Test, Acceptance and Production. (Some people call this DTAP.) Within each of these environments you then have a Staging website and a Live website. (Words like Staging get used for too many things, but bear with me.) The content people use the staging web site to verify their output before publishing it to the live site, which will be visible to visitors from the Internet.
It's typical for the content team only to work in the Production environment, so as you say, it's useful to bring back production content into the other environments. I usually have them bring back a copy of the database, and where possible, have a set of scripts to fix up any differences that are needed between the environments. If your system is going to be out of use for a day, this is probably going to hurt too much. I would suggest that you look at why it takes so long, and put in measures to reduce the time.