What if you need more than 2 seconds - say 1 minute? Or more? When designing an application think of terms of events that occur in MCU time (microseconds to perhaps a few miliseconds) and those that happen in human time (from seconds to hundreds of hours).

Lowering the clock speed is not the best way to accomplish what you want - it would be like running a car with its brakes applied. Its main use is to lower power consumption. For stuff that happens in MCU time, you use timers in their native mode - just like you described. For human time events, set up a 16-bit timer to interrupt say every 100mS (50,000 counts assuming a full-speed 20MHz clock with a PIC16). In the ISR, increment a 32-bit variable. This will allow you generate delays up to 42,949,672 seconds, 11,930 hours, 497 days. Compare the variable to whatever delay you need (you can have multiple delays), when it matches set a flag that will acted upon appropriately in your mainline code.