Code error causing me to lose Arduino (Micro) boards (when uploading code)

My guess is that your enormously long interrupt routine is the problem.

Agreed. That, and the fact that you re-enable interrupts in the middle of your ISR.

Some of the comments in there are plain stupid. Some of the data types are, too.

      // keep a running total of the last 10 IBI values
      word runningTotal = 0;                  // clear the runningTotal variable

Do you KNOW what size a word is? If not, don't use it. This isn't Microsoft, and you won't be fired for not using a stupid type they invented. You are not clearing the variable. You are assigning it an initial value.