I've read the other threads regarding door lock problems, and they seem to have something to do with the modules or motors. This thread however, may be completely mechanical in nature. Have you tried shooting graphite lubricant into the keyhole to free it up? Don't use liquid lubricants, as they may damage the locking system.
If it's a case of a worn lock cylinder, a replacement kit can be bought from your local BMW dealership's parts counter. I did it over the summer, and the kit cost me $35. It comes with the cylinder assembly, springs, pin/tumblers, seal & locknut. Make sure you buy the correct side- left and right side doors are not the same! Be careful when removing the old one- don't let the pins and springs pop out of the cylinder because you have to assemble the new cylinder by following the pin number sequence and orientation of the old one- this is how the lock is keyed to your keys. Each pin is numbered, and it's as simple as copying the old one. But even if you screw it up, you can go by trial and error- insert one pin at a time and test by inserting the key, it just takes longer. That's what I had to do since my old cylinder was damaged by vandals.
The process is not hard at all, most of the work is taking the door panel and handle off. If you're afraid to attempt it or too lazy, I think the dealer was quoting me about $140 for the whole job.