Used to be overworked all the time. I find the best way to avoid this are two things:
1. Plan your hours in advance and stop abruptly once time is up. The added bonus is that you get a hard deadline to aim for each day, which stops you from procrastinating. This does not mean you work less, hours. It just means that you plan out those hours, so that you can plan your life.
2. Do not over-commit to doing stuff. ( Over-deliver instead ).
Note: Had a huge "crunch" situation a while back. Made an expirement, where I planned the crunch with my team. Each day, we decided in advance how many hours we needed to work tomorrow. This allowed team members to plan out their long days. This is really critical if you have children. It worked great, considering that we were working very long days, the tension really went down.
Physically, there are two more things I recommend:
1. Drink a lot of water. I program with a one liter beer glass next to me.
2. Every 3 hours I get up, and physically walk out of the building to a predermined spot 500 meters away. It takes me no more 10 minutes, and I do it no matter the weather. Besides solving your posture problems, it gives you time to think. Do not do this with other people. Do not talk on the phone while you do this.