The important thing in my mind is to have a distinct and isolated layer where database access occurs and marshals the data up to the POCO classes.
I think this is where I'm leaning... something like a distinct ViewModel layer containing my "client-safe" classes (almost the same as my DAL POCOs but with actual List<ViewModelPoco>, sans id's or other private sensitive info) and manually build up the state of my complex ViewModel step-by-step in each ViewModelPoco class constructor, by selecting out the "children" FK List<ViewModelPoco>. I know there are libraries like valueinjector to assist in merging the POCO values onto the ViewModelPoco values.
Plus, it's wasteful of bandwidth to bring along all that data if it isn't absolutely necessary for the UI. You want to display a subset of what's in the POCO, so only transmit that.
I've been reading up on angular.js and that framework promises 2-way databinding on complex JSON. I think the amount of data transmitted would be offset by the fact I'll be dealing with a relatively "fat" client. A lot of multi-step stuff would be happening only in the browser, then submitting everything at the end in one post. (I know this is not REST).