I would like to develop two versions of a website I'm working on, one for version four+ browsers and one for the old browsers as well as webTV, and then automatically re-direct the visitor to the correct version without them having to do anything and without them noticing.
I figured the best method would be to create an asp page (index.asp for example) which I used as the nominal address for the page and then have this page determine the browser capabilities and serve up the correct page (version3.asp or version4.asp).
However I understand that this is known as cloaking and is frowned upon by many search engines so what exactly should I do to make the viewing experience as easy as possible for humans without upseting the search engines in the process?
The key in the case you describe is to avoid serving different content to different browsers, if you keep to serving the same content but restrict yourself to the attributes supported by the version of browser you are targetting there should be no problem.
Also you used the word redirection, I'm sure you didn't mean that in the meta refresh sense, but just for others that come along to read this, ensure that no redirection takes place. Read the content, decide server side what type of browser you are serving to, and put out the appropriate page for that browser.
This technique is used by just about every major site on the Net including search engines, they often target browsers, geography, etc., but keep the content served consistent.
In addition to what Air said, just make sure that your "unknown agent" default page is the same for the users as it is for the se's. I know it is so tempting just to write another version of the page for "bot X" and serve it to the se's. I've done so in the past and just served them the lynx/nongraphical browser page. Which infact, that is exactly what it is. If you stay away from ip serving on that basis, you can cloak for years and never hear a peep out of the se's - even google.