If you're designing web pages, whether for your own enjoyment or for profit, your pages have the opportunity to look, smell and feel as good as the very best. I'm certainly not suggesting that I'm perfect, but below are some things I try to keep in mind.
You need to present content fast: after only a few seconds with no results, many people will have moved on. Get your viewer's attention quickly. Shove some text up while you're waiting for the graphics to arrive. Within the site, if you know that something's going to take a while, warn the reader before they click the link.
Try to be consistent. Things like layout, background textures, and recurrent navigation elements let people know that they're still on your pages. I also make external links open in a new window, though this is a bit of a throwback in terms of modern web etiquette and you might want to consider marking them as such if you do this. The point is: people get to know what to expect.
Pick strongly contrasting text and background colours. If you use background textures, they need to be flat and unremarkable—a border image may impact less on your text's readability and look more professional.
A quick statistic: about 10% of male surfers will be colour-blind, and many more will have sight problems. It's in your interest to cater for everyone, keeping font sizes reasonable and colours clear.
If you're going to go for anything other than a serif style font like Times New Roman, use it everywhere. You may find that there are one or two common fonts in that style, such as the sans-serif Arial and Verdana fonts. Just remember that your pages should look acceptable formatted in any font since different machines, systems and browsers may have different defaults and different fonts.
Most browsers don't show anything inside a table until they have every piece of text and image which makes it up. A reader may left staring at your background texture for what seems like an age. One solution is to split text into at least two tables so that the short first one is already on screen whilst the second loads. It feels faster, and gives people something to focus on.
If only a few people can see or hear your fancy gizmos, be they Shockwave gadgets, Java applets, or ActiveX programs, is there really any point to them? Slow downloads and incompatibilities aren't friendly, especially to people with little computer experience. Flash is unnecessary and overly platform-specific.
Avoid glaring animations and irritating sounds. Subtle animations with few frames that don't catch the eye as much are better, as well as quicker to download. Sounds get annoying very quickly. It's particularly bad for sounds attached to an index page because you get the noise every time you hit the "back" button.
Frames have consequences. Not only do they reduce the amount of space on screen for content, they render search engines unable to reference your pages in many cases; if they do get listed, they'll appear outside the helpful navigation frames you designed.
If you provide the heights and widths of images, the browser can move on and display the rest of the page whilst that graphic downloads, so the viewer gets your pages faster. If you're lazy, consider doing at least images at the top.
Use the "alt" tag when possible, because a surprising number of people surf with the graphics turned off. Many people don't have cheap net access yet. This particularly applies to navigation buttons.
Keep reducing their proportions. Lose 10% of the screen size and you've lost 19% of the file size. Reduce the number of colours in each image, so that if possible they're 8-bit or less, and slash file sizes. Try more aggressive compression settings (but keep the originals safe!) Know when to use GIFs and when to use JPEGs. (GIF for cartoony images, JPEG for photos.)
Re-use your images on as many pages as is possible without them becoming boring. If it's already in the browser's cache, it doesn't need to be re-fetched.
Don't assume that everyone is running Windows, or the same browser as you. This means not using HTML code which doesn't work on at least two popular browsers (basically Internet Explorer and Mozilla/Netscape.) Tags like <BLINK> or <MARQUEE> only serve to exclude people. Browsers may have different defaults on the Mac or under Linux, and these represent growing markets.
If you must specify fonts, use them properly. It is more acceptable to specify a font if you add a font family, because the browser should then sort out an alternative if needed. You can assume that everyone's default font is probably a Serif face. If you want a monospace font, then good mark-up is <font face="Courier New, monospace">, or if you want a sans-serif font, you should use something like <font face="Verdana, sans-serif">. The trick is to specify the font family after mentioning the font, which can be harder to achieve if you're using a WYSIWYG designer.
A much, much better way to use fonts is not with font tags, but cascading style sheets. These are surprisingly simple, and save you generating massive HTML files full of font tags. They also allow you to change the way all of your titles are displayed by changing one file... less effort for you, less hassle for others. Try a simple guide such as Sizzlin' HTML Jalfrezi which has a stylesheet section.
Since Macs have different fonts to PC owners, after the font name and before the font family, try to include the name of a Mac font of that type—Helvetica, for instance, is the equivalent of Arial/Verdana, and all Macs should have it.
Different browsers have different defaults of things such as page margins, table cell spacing and padding, frame borders and so on. If in doubt, specify all of the available options for tags. Pure WYSIWYG editors make this difficult—this is another compelling reason to learn at least some HTML.
Try to stick to scripts which are cross-browser compatible. Often problems arise simply because of sloppy programming. If in doubt, check popular script repositories for similar scripts certified compatible. DynamicDrive is a good one.
A neat, orderly directory structure underlying your site makes for a logical progession between pages. For example, I employ several layers: a general index, a specific subject index, followed by actual content, which may in itself be a sub-index. However you do it, make sure that the viewer is aware at each stage available on the next click.
Consider having an overall site map, a single page from which all others are directly accessible. This site map could then be linked to from all pages, and the user will then be able to discern the logic in your site layout. And there should be some.
If someone saved one of your pages to disc, would they easily be able to find it again later on the net? Fix this. Stick your root URL (or even just the site name) somewhere on every page. I suggest the page title, if your URL is short enough.