Just one note for the naysayers. This relates to the OP.
I LIKE using SELECT *, since it allows full table data to be funnelled seamlessly up (along ?) through several levels of nested views without specifically mentioning columns. Sometimes, you do only want specific columns, but other times you really want everything in the table now and at any time in the future.
BUT there is the problem described here, with views as well.
Call it brute force, but since I have a program which keeps a database rev number and all the update scripts necessary to go from any rev up to the current rev, I simply put at the end of the update process a script which refreshes all views in the database using sp_refreshview (similar to this http://yellowduckguy.spaces.live.com/Blog/cns!DA380C13569E8907!336.entry).
I run it about 7 times (to allow for nested views having SELECT * -yes all views in the db are refreshed 7 times, which is more than my maximum required nested view depth).
Looks like you could refresh all the other (non-view) objects with sp_refreshsqlmodule.
This refresh process takes a minute but it's part of a software uprgade process, so that time's not a big issue.
In the dev environment, I'm onto it enough to remember to refresh views myself or call this global refresh if things get too messy.
I still think it's much better than typing all those names(and re-typing them five times as they percolate up through the views). Saves a heap of time and verbiage. A line of code written is a line of code to be maintained. If done right, this technique is sexy.
A warning: probably not for team environments.