I would simply like to rewrite all requests from:
http://example.com/products/product.cfm?id=product-name
to
http://example
Using mod_rewrite, you could write:
RewriteRule ^products/([\w-]+)$ /products.cfm?id=$1&%{QUERY_STRING}
This will do the translation you wanted, while preserving other parameters in the original URL. It won't handle categories, but I'm not sure you can have those both in operation simultaneously as you described.