I doubt keypresses will be causing your crash unless you don't handle "other" keys. Generally that just means jumping back to the main loop if no keys were pressed. The key value in a getting modified would just cause your character to move left instead of down, for example, not crash. I would put everything after the title screen (which looks much better now in my opinion!) and pick one thing to work with. For example, get your grayscale stuff set up and running and then draw a sprite. Then use that sprite routine to render a predefined list of objects to the screen. Once that's done and working correctly, create another routine to populate the objects list. And so on. One part at a time, with testing and debugging at each stage. You can use the code you've written as a basis for what to do next, but you really need to go one routine at a time.
The first post in this thread was almost two months ago and you still haven't been able to debug it past the title screen
Anyway, if there's anything i/we can do to help, don't hesitate to ask. I've even installed Mono!