MLB 2k12 has a bug where if there are no games being played on the day you are trying to play the game it will lock up.
To fix this you change the date on your computer to a day that a game was being played (for example Auguest 6th 2012) and load the game. If you also log into your 2k account and let it update the roster and such it will work fine, in theory anyway.
For me every time I reboot I have to change the date again. I made a little winautomation tool that will change the date to 8/6/2012 for so many seconds and then set it back. to the current date.
This works for windows 7 ultimate 64bit, I haven't tested it on any other OS but it should work on any system that has the 'date' command line tool.
Just double click, set for how long (in seconds) you want the date to be August 6th (default 300) hit okay and then run the game. On my system 60 seconds is more than enough time.
click the link to download (PC Only)
mlb2k12 date change tool
I hope this helps someone out there.