Before talking about the new model for queued transports that we've added to WCF 4.0, let's first look at the traditional transacted receive pattern.
Some downsides of the transacted model are that we have to have a transaction the entire time through the loop and that if there are multiple consumers reading from the queue, there's no guarantee that if you abort a transaction then the same instance will get the message the next time. This makes defining error logic in a distributed system more challenging.
Here's a similar barebones description of a model based on locking, which I'll go into more detail for next time as well as talk about the programming interfaces. You'll notice that in the end you get exactly the same outcome, but the changes to how the receive is done have mitigated the downsides.