Cascasding style sheets (CSS) are great for specifying fonts, but currently the various interpretations by different browsers, as well as non-intuitive oddities in the CSS specifications make it a less than desirable tool to work with for layout. In addition, generally structuring the layers combined with CSS markup can become quite complex, which generally adds quite a bit of testing time to ensure that small bugs don't arise from the complexity.
Tables used to be the common way of designing web pages, until CSS took over. While I try to code my pages "correctly" using CSS, there are often times cases where it is easier and more cost effective to just pull out a table and stop fussing around with the CSS. Every so often I seriously consider going back to using tables for layout, and for personal or development websites I generally end up using a table to dictate the general layout of a website just to avoid the hassle(columns in particular are far, far easier to accomplish with tables).
Just for fun, and to point out that its not just my lack of CSS skills, here are a few images of sites that suffer from CSS bugs and oddities that should really know how to use CSS.
Sitepoint: Yes, they are advocating the useage of CSS on this very page! I stumbled into Sitepoint for tips on using CSS, but I personally would find the search box overlaying my (or a client's) logo unacceptable. This was never a problem when designers used tables, since the content wouldn't collapse onto and over itself. You may have an "exploded" layout, but at least it degrades to where you can still read the website's content.
I'm fully aware that there are "proper" ways to program the Sitepoint page using CSS to make it display correctly, but I guess my point is that CSS makes it more difficult to know the outcome of how the CSS code will be implemented in a browser, making it more difficult and costly to create web sites. In the past, it was fairly easy to predict how a table would be displayed; there were fewer options for oddities to arise since it actually takes less code (compare a columned layout created with tables versus the crazy complexity of arriving at the same point with CSS) , and table layouts would degrade to a nicer state where objects wouldn't overlap one another.
HTMLSource: Another site touting the benfits of CSS, yet suffering from the affects of CSS based layout. The advertisement along the left banner displays only half, while the other half is beyond the left margin, and this occurs when my browser window is maximized. I don't think this issue is even possible using table-based design.
Smashing Magazine: In case you couldn't tell, I find it entertaining to find little CSS issues on websites that advocate the use of CSS. Anything below a window width of 1000 pixels wide, and the logo overrides their advertisement on a Design with CSS book (at least they got the z-index right though). If this were my website, I would find this CSS issue unacceptable.
Search-This.com: 10 Quick Tips for an Easier CSS Life
Notice the 'FREE' banner, which very ungracefully falls behind other content when the window is less than 1500 pixels wide (yes, I said 1500 pixel page width!). Less noticable, but the "Download Wordpress" icon has the same problem, riding over the top of the gray border.