If you've got an automatic, try taking it out of park and starting it in neutral, or back into park. Anyway, just move the tranny gears around.
I had an 89 325i that would occasionally not start, with the exact symptoms he's describing. I even had to get it towed the first time it happened. Once we got to the mechanic, I put it in reverse and rolled back down the ramp. Figured I might as well try starting it again, so I did. This time it started up with no problems.
AFter this incident, the problem would come and go every couple of weeks. I figured out all I needed to do was move the shifter, and it's start just fine. I guess I must of had some sensor that was bad?