NGUI creates quads and you can use any shader with them. For example if you create a UITexture, then give it a material, it will display that material as-is. You can use any unlit shader (and even lit ones if you enable normals on the panel responsible for the widget). Furthermore, you can use UV2 to feed extra data to your shader, which is useful if you are using a sprite that draws a part of an atlas but still want 0-1 range coordinates for the left/right and bottom/top of your widget's bounds to sample a secondary texture.
So in short -- I see no reason why it won't work.