Arduino Sleep Functions

I am having trouble getting this to work, while it sleeps for the watchdog time of 8s, it doesn't stay asleep. If anyone can help I would be very grateful.
Here is my simplified code:

#include "SD.h"
#include <Wire.h>
#include "RTClib.h"
#include "DHT.h" 
#include <avr/sleep.h>
#include <avr/wdt.h>

const int StepTime            = 60000;    

#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

RTC_DS1307 RTC; 

DateTime now;
uint32_t NextTime;
uint32_t NowTime;
uint32_t RemainingTime;
int SleepTimeIndex;
float SleepTime;
volatile boolean f_wdt=1;

// Watchdog Interrupt Service / is executed when  watchdog timed out
ISR(WDT_vect) {
  f_wdt=1;  // set global flag
}

// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
void setup_watchdog(int ii) {
  byte bb;
  int ww;
  if (ii > 9 ) ii=9;
  bb=ii & 7;
  if (ii > 7) bb|= (1<<5);
  bb|= (1<<WDCE);
  ww=bb;
  MCUSR &= ~(1<<WDRF);
  // start timed sequence
  WDTCSR |= (1<<WDCE) | (1<<WDE);
  // set new watchdog timeout value
  WDTCSR = bb;
  WDTCSR |= _BV(WDIE);
}

void system_sleep() {
  cbi(ADCSRA,ADEN);  // switch Analog to Digitalconverter OFF
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); // sleep mode is set here
  sleep_enable();
  sleep_mode();                        // System sleeps here
  sleep_disable();              // System continues execution here when watchdog timed out
  sbi(ADCSRA,ADEN);                    // switch Analog to Digitalconverter ON
}


void setup(void)
{
  Serial.begin(9600);
  Serial.println();
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  now = RTC.now();
  NowTime = now.unixtime();
  NextTime = NowTime + StepTime;

  cbi( SMCR,SE );      // sleep enable, power down mode
  cbi( SMCR,SM0 );     // power down mode
  sbi( SMCR,SM1 );     // power down mode
  cbi( SMCR,SM2 );     // power down mode
  setup_watchdog(9);

\\other setup omitted
}

void loop(){

  now = RTC.now();
  NowTime = now.unixtime();
  if (NextTime > NowTime)
  {
    system_sleep();
  }
  else
  {
    if (f_wdt==1) // wait for timed out watchdog
      f_wdt=0;   

\\sensing /logging code here

  logfile.flush();
    NextTime = NowTime + StepTime;
    delay (1000);
    system_sleep();
  }
}

I got this to work, however my unit is still sucking 50mA even when asleep. Is there a way to kill the SD card and other chips to make it consume less?

Slothman:
I got this to work, however my unit is still sucking 50mA even when asleep. Is there a way to kill the SD card and other chips to make it consume less?

You don't say what board you have but I don't think it matters.
You can only turn off features inside the Atmega. You will be stuck with pretty high power consumption from the on-board volt regulator and surrounding chips for example your USB controller.
If you want to really save power you should build a custom board with only an ATmega328P and run it straight from battery.
When I do that I get a consumption around 4uA (not mA) during sleep with nothing else attached.
If you're going to use any periferal components you will have to make sure they aren't powered during sleep.