What language are you using? BSON by specification is order preserving. However, mapping into a data structure is language and/or driver dependent. Here's what Ruby and the 10gen Ruby driver does, in Ruby 1.9.3 where Hash is order preserving.
$ irb
1.9.3-p327 :001 > require 'bson'
=> true
1.9.3-p327 :002 > { a: 1, b: 2 } == { b: 2, a: 1 }
=> true
1.9.3-p327 :003 > BSON::OrderedHash[ a: 1, b: 2 ] == BSON::OrderedHash[ b: 2, a: 1 ]
=> false
BSON::OrderedHash was needed for Ruby 1.8 where Hash is not order preserving. The above difference is explicitly coded in the Ruby driver. Drivers for other languages may differ, but I haven't done an explicit survey. If you do one, I'd be interested in the results, or you could make a request to me/us via JIRA ticket.
Blessings,
-Gary