BitmapData.Strideプロパティ

コメント欄にて情報を頂きましたので、追記しておきます。
1行のバイト数を取得するBitmapData.Strideプロパティという便利なものがあるということで、早速使ってみました。

                int width = this.bitmap.Width;
                int height = this.bitmap.Height;
                int strideIn = dataRgb.Stride;
                int strideOut = dataGray.Stride;
                byte* currentData = datas24bppRgb - 1;
                for (int y = 0; y < height; ++y)
                {
                    int widthY = y * strideOut;
                    for (int x = 0; x < strideOut; ++x)
                    {
                        if (x < strideIn / 3)
                        {
                            *(datas8bppGray + widthY + x) =
                                (byte)(((int)*++currentData +
                                        (int)*++currentData +
                                        (int)*++currentData) / 3);
                        }
                        else
                        {
                            ++currentData;
                        }
                    }
                }