I've just used your code on an ATMega1280 (Arduino Mega) and found I needed to make a minor change to get the sensor working. Specifically I needed to disable one of the delays while waiting for the DHT11 to drop the line following the initialisation.
Note sure why yet - but it works reliably. The line in red was changed to make it work on the Mega:
//Next: Change Arduino pin to an input, to
//watch for the 80us low explained a moment ago. pinMode(dht_dpin,INPUT);//Was: DDRC &= ~_BV(dht_PIN);
//delayMicroseconds(40);
Thanks for the initial script.