First, SPMetal is good. It's very good. Much better than life without it. It encourages more object-oriented programming (instead of XML string oriented programming - blech!)
That said, SPMetal falls short of awesome by just a hair.
Ideally, one would be able to generate models from local CAML files instead of having to deploy the content types first since I assume it's best practice for organizations to deploy the content types from CAML files for consistency. It seems backwards from a development perspective to have to deploy your content types and then be able to generate models to write code.