I can't tell you the number of times I've seen someone use a solid color graphic file as a background image when the background color can be specified and eliminate the need for another graphics download. Finally, use tables sparingly. One large table filled with html code will give the web surfer a blank page while the whole document loads. If necessary to use tables for most, if not all of the document, break it up into multiple tables to shorten loading time. Divide long tables.
Browsers wait to have the whole table before showing it so they can calculate the column width.
If you divide in sets of rows then the client will be able to start looking at the first set while the rest of the table is coming. This actually doesn't speed up the whole download but avoids the long wait in front of a blank window. Use graphics intelligently, e.g., avoid using graphics for plain text. Consider using tables creatively to mimic graphic buttons. Have all images load from the same directory.