I was trying to get a Rockbox simulator working in OS X. After dealing with a bunch of other issues, I got an executable which displays a beachball cursor and doesn't respond to input. I found a post that claimed events sent to the app are only dispatched to the main thread. Then I rearranged code so the main thread initializes the video and handles messages and input worked properly.
The SDL documentation claims SDL_WaitEvent() can only be called from "thread that set the video mode". This is apparently not a sufficient condition for OS X.