Back to the OP's topic... IF you can not find anyone local you can also have your car coded "remotely". There are a few site sponsors here(e90post.com ) that offer this service. Like I said you can either have the M3 digital speedo (V = mph) coded to read the buffered value (so it matches the speedo) or the actual vehicle speed which is exact, according to my GPS.
IF your car is a manual you can also have the up/down shift arrows coded in too. But I think those are quite useless. It tells you when to up shift or down shift. Plus there are lots of other cool coding things that can be done to a modern BMW.