Try to keep in mind that the size of the page is only part of the problem (and over a megabyte is sort of pushing it anyway — a lot of people are working with data caps). The number of HTTP requests you're making (especially in the page head, since those will mostly be blocking requests) has a bigger influence. Every one of those requests may experience a short delay at the server when the server is under heavy load, and there will be some latency anyway just fetching the resource over the internet. If you can (and that depends on the software you're using), consolidate your CSS into as few files as possible. Your JS as well. It would actually make sense to put many of your styling images (icons, small tiled backgrounds) directly into your CSS as base64-encoded data URIs instead of fetching them as separate files — the total size of the file will be ever so slightly larger, but since it's all handled in one request it will still be many times faster.
Unfortunately, there's not a lot you can do if the page is being generated (almost) entirely by Ajax-type requests, since it will be designed around the "lots of small requests" model. That works well after a major page load, but it's not a very nice way to create the initial page, especially on a busy server or if your users are on mobile devices.