Hi,
Maybe you could do something with the "payment methods" and "shipping methods" restrictions of the custom field.
For example, suppose that you set a weight in your hardware products and no weight in your software products, you could use the minimum weight / maximum weight settings of your shipping methods / payment methods, to display copies of the shipping methods / payment methods you already have. And thus, you could then add a restriction to the custom field so that it would only display for your shipping/payment methods you've configured with a max weight of 0.1. That way, once at least one hardware products is in the cart, the weight will be above that threshold and the other shipping/payment methods with a min weight of 0.1 will appear and thus the custom field won't appear.