I cant tell you what is wrong with your code but the sleep function you are using looks a lot more complicated then it needs to be, this is what i am using on a similar project:
#include <avr/interrupt.h>
#include <avr/sleep.h>
const int buttonPin = 0;
ISR(PCINT0_vect) {
}
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
int main(void) {
init();
{
pinMode(buttonPin, INPUT_PULLUP);
ADCSRA &= ~(1 << ADEN); //adc off
sbi(GIMSK, PCIE); // Turn on Pin Change interrupt
sbi(PCMSK, PCINT0); // Which pins are affected by the interrupt
sei(); // Enable global interrupts
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
}
while (1) {
if (!digitalRead(buttonPin)) //just to avoid sending on press and release(sends only on release)
{
//send stuff here
}
sleep_mode();
}
}
Another thought, not code related INPUT_PULLUP can waste a lot of power over time mayby try a external pullup mayby 1M or at least 500k. and if the 433 transmitter are the same cheap ones I'm using, try driving the transmitter vcc from a pin on the attiny instead this also saves alot of power, just a thought
Best of luck man.