I've used basically the same idea for creating a tableless form layout. But, I use an unordered list to hold my labels and inputs. For example:
The CSS styles can be just the same as what pcampbell has used in his example. The only difference for mine would be the addition of a style for the UL such as:
ul {list-style: none; margin: 0; padding: 0;}