You don't say what processor you are using but I have used the WD timer in an AVR for performing the processor wake-up.
Here is a section of my code that goes to sleep to be awakened by the WD timer reset.
When the WD expires the processor is reset and wakes up, it configures the processor as with a normal reset and disables the WD (if you wish to use the WDT to monitor your code you could leave it enabled but configure it for the timing you need during execution).
After performing the required operations it enables and configures the WD timer for the required sleep time, turns off the various peripherals not needed during sleep then sets the WD timer for a later wake up. It then goes into an infinite loop (that will never execute) until the next reset.
Although a similar behaviour can be obtained using the normal timers they require that the clocks be operating and as such the quiescent current of the system is usually much higher even if using the low power internal RC clock (varies with processor).
The power consumption during sleep was about 20-30uA in my design although just the processor itself with WD timer takes about 3uA at normal temperatures. This would be about 5 or 6 years when powered from a CR2032 lithium cell.
bit_dir_inp(LED1); // Disable LED
ADCSRA= 0; // Disable ADC
sleep_mode(); // Power down, wait for reset