OK. I did some further checking and the markup for the modules is in the source set to display: none. If I disable that the page renders correctly and the modules all show up. So to that I say WTF?
Why is the unordered list elements set to display none?
EDIT TO ADD: I think it's a jquery problem because I discovered none of the jquery functions are working in the page edit.
EDIT AGAIN: I tracked it down with the help of the console. It seems that there was an error in the upload, either from my FTP client or the server. Once I tracked down the files that were corrupt (jquery UI and tiny_mce.js) and fixed them everything seems to be back on track.
Thanks everyone.