Have you tried turning the steering wheel when trying to start the car? This usually resolves the yellow steering lock indicator, but may be worth a shot w/ the red indicator.
Push button starts utilize a solenoid to disengage the steering lock pin. A low battery may not produce enough current to pull the locking pin free - OR - if the car moved a bit, the steering column may have slightly turned which put some extra friction on the locking pin that the force from the magnetic field may not be able to overcome.
If that doesn't work, the sensor in the steering column may be faulty. If this is the case there are two possible outcomes.
1. In some instances, this has been fixed by a software update around the tune of a few $100.
2. Worst case is the $5 sensor has failed and that BMW, with its ingenious engineering, has put you in a position requiring a new steering column. I've seen instances where customers have been able to negotiate that BMW pay half the part cost.
In either case, have it diagnosed first - I may be completely wrong. If you can confirm its the steering column (worst case), you may be able to find a refurbished part online and replace it yourself. Although, I'd imagine even if you did all the mechanical work yourself, there would still need to be some sort of software calibration done by a dealer.