Here's what I wound up creating:
www.ai.uga.edu/mc/CovingtonImageProcessing.zip
It's only moderately fast, but fast enough for my purposes. I ended up using
LockBits and Marshal.Copy to copy the image data into an array, then doing
the opposite after processing. That way I don't have to do a method call on
every single pixel, especially when doing things like convolutions.
This is released to the public domain on the condition that I'm not expected
to support it! I plan to do some image processing experiments of my own
using this program as a platform.
Thanks to all who made useful suggestions.