Sorry if I'm breaking the necro rule with this reply - I couldn't find anything explicit saying what the rule is - but I'm using a HacroCam myself and have a suggestion for using greyscale.
If you look at http://hacromatic.com/page/19
, they talk about "switch[ing] the camera over into YUV mode and then just read the Y byte" "so we can store a pixel in a single byte" rather than going through the kinds of hoops that you went through above. The downsides are that 1) you need to change the HacroCam's firmware to do this, requiring a PDI programmer, and 2) that you won't have the option of enabling and disabling it at will. The upside is that every pixel is only 8 bits, speeding everything else up.
I'm using the tutorial on that page myself, though I'm having different trouble that I'll be posting in a new thread.