A post on the EA forums has thrown a bit more detail into the blaze of speculation surrounding Battlefield 3's failure to appear on Steam. While we're still not precisely sure what it is in Steam's terms of service that preclude its inclusion, it is, as many speculated, down to how Steam restricts DLC and patch distribution on their service. The author of the post explains: "EA offers games to all major download services. Unfortunately, Steam has adopted a set of restrictive terms of service which limit how developers interact with customers to deliver patches and other downloadable content. No other download service has adopted these practices."
More on EA's own policies appear here. I don't think expect this will be the end of this particular power struggle.