Arduino device (PanStamp) hangs when I change the data that is sent through serial
If nothing but the packet size changed, then the packet size is somehow related. 


What is the baud rate?
Is there any reason one iteration of your code take anywhere near 1 sec to run? 
How long can getAltitude() take to execute? Does it wait for hardware? 


There's an awful lot of code executing at interrupt level - getAltitude(), and send_through_serial() (which also uses interrupt driven I/O).  The first change I'd make would be to reduce the Timer1 interrupt code to setting a flag bit. Lift the rest of the code out of the interrupt routine into the main line. Call it whenever the flag bit gets set, and clear the flag bit. The worst that should happen by doing it this way is you could miss some interrupts if your main line code runs too long. Not that missing interrupts is acceptable; but it should stop the crashing and let you test your code further to find out what's being slow.

As to stack collisions, making a local variable into a static one won't reduce that likelihood; rather it could increase it. Locals get allocated and de-allocated, so there are times when they don't exist and can't contribute to a crash. Statics always exist and forever reduce the amount of memory for the stack can grow into. What might change though, is the behavior of the program when the collision occurs. When you make something static, it will be assigned a different location in memory; as a result, different variables might be involved when the collision occurs.