Nothing jumps out at me.
What core are you using? Some of them use timer1 for millis, some use timer0. My core uses timer0 - I leave the fancy timer free and use the 8-bit timer like every other arduino board does; for some reason some of the cores use timer1 for millis, depriving the user of the most interesting peripheral on the tiny85, for no improvement in code portability since timer0 is used for millis everywhere else, so there isnt a library of pre-written arduino code for timer0....
If you're using a core that uses timer0 , then the timer reconfiguration you do will trash the timekeeping, potentially throwing the delay period way off. If the core you're using uses timer1 for millis, this doesn't explain it.
You don't need to do anything special to deal with millis overflow if you use subtraction when you test it (think about it, after overflow, you'll be subtracting a much larger value from the current millis - causing it to wrap back around and give the right answer anyway)