I'm actually afraid to update it to more modern markup for fear of losing my ranking.
If you for the most part keep the content the same, updating it would only increase your rankings.
Why does it rank so high with all those "mistakes"? The biggest reason is a high textual content.
To rant and rave like Ballmer: CONTENT, CONTENT, CONTENT, CONTENT! CONTENT, CONTENT, CONTENT, CONTENT! CONTENT, CONTENT, CONTENT, CONTENT!
Well written NON-keyword stuffed content of value that people will organically link to. You have that, the rest is window dressing. While clean markup and separation of presentation can help, that's just because it moves all the extra crap out of the markup so if the search engine is ONLY looking at the markup, it'll load faster for them and be easier to parse.
Hence the term "minimalist semantic markup" -- it's why the method I advocate for building a website starts out with the content -- or a reasonable facsimile of future content -- in a flat text editor putting it in a sensible order as if HTML didn't even exist. You then mark it up semantically -- using tags to say what things are, NOT what they look like -- so non-visual UA's (like search engines and screen readers) have something useful to work with. You use semantic markup, then only add DIV and SPAN when absolutely needed during the styling phase, you end up with a very VERY tiny markup as the result.
Content FIRST; Because that's what's important -- people visit websites for the content, NOT the goofy graphics, goofy layout and even goofier scripttardery you hang around it. It's why I often say the best layout is one the visitor DOESN'T notice, as if they notice it instead of the content, you've done something wrong.
While I have no proof, I truly believe that search engines penalize sites on their load time and page weight.
Actually Google came right out and said it four years ago:
So your guess is confirmed, and it's ANOTHER reason I'm always taking people to task for poorly written slow loading pages.
I actually have a formula for figuring out if your markup is trash:
markup limit = 5K + content size * 1.5 + 200 bytes per image/object/video/audio.
"content size" would be your plaintext/cdata without markup. An easy way to figure that is to load the page in a browser -- I suggest "real" Opera (12.17) for this as other browsers add extra crap to the copy, select all, copy, and paste into a text editor that will tell you how big it is.
We take the OP's page from their siggy, and it has 8.03k of plaintext, and by my count 28 images that should go in IMG tags. A quick ballpark of that 'ideal size' formula says the markup should be able to be brought in under 23k... so what is it doing with 55k of markup? All the things I outlined in my previous post.
Which to be frank is kind-of scary to see on a website claiming to be a "web design company" -- though sadly entirely what I've come to expect the past few years; and it's like things are getting worse on that front.
For laughs since I'm at an impass on my own projects (writers block) I might take a stab at a rewrite of that page just to show what I (and now Kevin2) means. I'll probably take a number of artistic liberties and axe a good deal of stuff on the page 'below the fold' -- like that massive space wasting banner rotator at the top.
I often find doing my little "rewrites" (which you can find here) helps me get past my own issues with development. Of course I'm all kerflummoxed right now as I just moved hosting to something cheaper... went from an expensive but limited dedicated to a cheap but more capable VPS