Si los pasa por la URL tiene como inconveniente que el usuario los ve. Eso es tan bueno o malo como tu decidas (cuestiones de seguridad). Si los mandas por URL los recuperas con request.querystring("campo"), pero la verdad es que request("campo") recupera tanto campos POST como GET (mandados vía URL), se utiliza el método QueryString o Form de request solo para diferenciar el tipo de parámetro recibido.
Y viendo tu código, aparentemente esata bien, digo, si abres el formulario y efectivamente los campos son POST, etc. Puedes ver el código HTML generado para verificar donde esta el error en caso de que no funcione.
Por cierto, veo que utilizas response.write para definir etiquetas HTML. Checa este artículo y pruebalo, veras que es cierto.
http://www.soloasp.com.ar/vertexto.asp?txt=27
saludos