I found that the best way to switch pools is through cgminer API. If you have your GPUs highly overclocked, they don't really want to start every cgminer restart. With API there is no need to restart cgminer instance, unless you are switching between scrypt and sha256.
An example of adding a pool:
echo -n "addpool|stratum+tcp://stratum.give-me-ftc.com:3333,mylogin,mypass" | nc 127.0.0.1 4028