1. Why not keep XBMC running as long as the RPi is switched on? If you tweak it a little bit it will idle at about 20% load. So unless you wish the RPi to do any other demanding task just let XBMC be right there.
tvservice is the utility to handle HDMI status signals, such as HDMI cable unplugged.
/opt/vc/bin/tvservice -s outputs
state 0x12001a [HDMI CEA (16) RGB lim 16:9], 1920x1080 @ 60.00Hz, progressive
Unfortunately - at least with my setup Pi2B and Samsung TV - there is the same status reported for 1) TV in stand-by, 2) TV turned on and 3) Pi selected as HDMI source. So to the Pi there's no difference to detect.
/opt/vc/bin/tvservice -M (continous monitoring) however outputs
[I] HDMI cable is unplugged
[I] HDMI is attached
if the TV is turned on (from stand-by). So implementing the same callback that tvservice uses, it should be possible to trigger some event (such as starting xbmc) uppon turning on the TV. Unfortunately nothing is signaled during switching channels or turning off. It's noteworthy that other TV sets might behave differently - who knows.
See also: https://raspberrypi.stackexchange.com/a/46158/19949