I dont create many brushes, but when I do, I use the static system brushes as much as possible.
I mostly render images with the draw/fill polygon methods, and I have had almost no delay in drawing images with 30 or so polygons, with as many as 300 points each.
Do you render/refresh your image in a mousemove or similar event?
I allow users the "drag" certain objects across the image, and the image has to be totally redrawn in the mouse move event. At first it was very choppy, especially when I had a lot of points and objects to draw. So i added a DateTime to my form called "LastRender", and when the mouse event fired, I only redrew the image if LastRender was more than 3 milliseconds ago. The dragging is now VERY smooth. You can adjust the milliseconds depending on the system/application, but I found 3-5 ms to be best for me.
The best thing to do would be to time how long it takes to render your image, in milliseconds, and use that as a base to prevent renderings from piling up on eachother.