No, that's not a problem for bitmap pixel data. It is allocated in unmanaged memory, the garbage collector can't touch it. It is actually a memory-mapped file, the reason that loading or saving a bitmap puts a lock on the file. The LockBits() method ensures that memory-mapped file is mapped to memory and the view is stable. This kind of optimization is required because bitmaps can be very large and the memory for them should not be backed by the paging file.
Anyhoo, using byte* or IntPtr is not a problem, the memory they point to is guaranteed to be stable as long as the bitmap is locked.
The kind of problem you ought to be looking for is running off the end of the bitmap, you are using unsafe pointers so you won't get a friendly IndexOutOfRangeException. The AV however ought to be the next best diagnostic, assuming it actually occurs inside the code that's bracketed by the lock. Having a mismatch between the pointer type and the pixel format could be a cause. There's way too little code in the snippet to theorize beyond this.