I shipped my M cross country from Washington state to NJ using
uShip; they had a bunch of bids for me from both smaller companies and larger brokers.
I ended up paying slightly extra (+100 bucks, if I remember correctly) to place my car on the top of the carrier. Bids were between $1110 to $1200 all told, across about 15 different bids.
Going for a fully enclosed will set you back a bit more, but I had a great experience with the guys who picked up and dropped off my car.