I wasn't able to finish this, but I did get it to just be an Image property instead of using an ImageList and an ImageIndex property to have an image showing, but when you actually set it to an image, it crashes and I'm really at a loss to why, the error message shown (at design time, in the designer) doesn't help because the Paint event that uses the Image property already checks that it's not a null reference:
It has a problem with this block of code:
I also added the Font, ForeColor and BackColor properties too, though if you change the font (right now) to a larger font then you have to re-size the control on the form yourself to accomodate that. I don't know how to have the control re-size itself vertically like a normal textbox does when you change the font size (and the TB is not allowing multiple lines of course).
If Me.Image IsNot Nothing Then
e.Graphics.DrawImage(Me.Image, Me.GetImageRectangle(), 0, 0, 16, 16, GraphicsUnit.Pixel)
Other than those 2 issues, it's mostly done for you. If I get the chance next week I might try and finish it, but I suspect ForumAccountant will get to it before me anyways.