The Arduino is not designed for low power. For an answer to another question I recently estimated the Uno's current at 50 mA, at a 9 V input that's 450 mW. Part of the reason for the high power requirements is that Arduino has 2 microcontroller running at high clock frequencies.
Switching to the MSP430 platform looks like a good idea. I've used MSP430s running of a 32.768 kHz crystal which needed only 4 \$\mu\$A. (Power-down modes can go lower, but I couldn't stop the 32 kHz oscillator, because it took too long to start up.)
Then there's Xbee. A current of a few tens of mA is not unusual for RF modules, but maybe you can cut the average power consumption by switching it off for most of the time. This module has a transmit current of 48 mA, and a 27 mA receive current. If you would only transmit, and do that for 100 ms every minute your average current is 80 \$\mu\$A. Add 5 \$\mu\$A for standby and the MSP430, and a 250 mAh button cell will power it for 4 months. That's less than you specify, but somewhat better than the 1 hour you have now.
Other measures: try to get the Xbee's duty cycle further down. How much time do you really need to transmit a measurement (the 100 ms was a guesstimate)? Do you have to send every minute? Remember that 95 % of the current goes to the Xbee. If you can send once every ten minutes instead of every minute the battery will last 2 years! Smaller gains: can you shut the Xbee completely down instead of going to sleep; would save you 1.7 \$\mu\$A. Can the MSP430 run at a lower clock speed?
You will find other RF modules which require less power, but the 2 mile range may be a problem then.
I suspect that you are connecting Aref to the regulator output.
While you have sufficient voltage, and the regulator provides the correct (i.e. expected) voltage, you get correct readings.
When the battery falls below a limit, the output at the regulator falls, and will always be the input V minus its drop. The ADC will always read the same voltage (since regulator output = Aref = Battery - Reg. Drop), which happens to be a higher ADC value than before this condition.
You need a better reference voltage at Aref. You can, for example, use a Zener with a drop less than 2.8V, and a voltage divider to feed the ADC.
Update: (Regarding your comment) You should add a better reference voltage to Aref. Since you observe the problem it is a good practice to fix it. Your arduino the way it works now cannot tell whether the battery is dead or fully charged, which is not a good idea.
Another point is that you risk damaging your arduino, as you are bringing Aref above Vcc. There is limit for this (I can't remember, check datasheet).
Finally is is also a bad practice to rely on something you observed (and it is not a guaranteed specification), since it may soon behave differently. Save yourself from headaches, and design following good practices.
Best Answer
The first circuit will not work, you need a P-Channel MOSFET to switch the top rail with a pull-up. Note the logic inversion here, you pull the line low to turn on the power.
simulate this circuit – Schematic created using CircuitLab
You need to add some bulk capacitance to compensate for the diode which will introduce some interesting noise on the power line.
The gate resistor needs to be small, the pulldown/pullup needs to be large as shown in the schematic above.
Yes. The resistors prevent the signals from trying to power the device. 1K may actually be small. When you park the player you should also "park" those data lines in whichever state doesn't pass current to it.
Advising on devices is beyond the scope here, but you need a device with a gate threshold under 2.5V here and on on-resistance in the 10s of milliohms range. If the player is drawing 1A that resistance, and power lost in the MOSFET adds up.
Now that is a whole other can of worms. It depends on how the module itself handles power on. You may find it internally sequences power up properly, or you may discover the speaker "pops" every time you turn the module on and off. If the latter is the case you may need to add and control another device to disconnect the speaker while you toggle the power to the player.