Solution
Make your own pictures and specify them as the icon for a button. First, an easy example, where you might use ms-paint to make a bitmap
New Window( "hello", Button Box( "optional text", <<setIcon( "$desktop/hi.jpg" ) ) )
Huge button icon without transparency
You might want to have an empty string for the optional text, and you'll probably want a much smaller picture. That picture is more than 100x100. Typical icons are 16x16 or 32x32. You'll also want a drawing program that can create .png files with transparent backgrounds. The button above has a white background that clashes with the button's gray background (which might not be gray, depending on the theme).
Here's an example that takes pictures of the JMP markers to make icons from them.
iconsize=16;
gridsize=200;
gridcenterX=gridsize/2+1;
gridcenterY=gridsize/2+2;
iconhalf=iconsize/2;
For( icon = 0, icon <= 31, icon++,
gb = Graph Box(
FrameSize( gridsize, gridsize ),
Y Scale( 0, 2 ),
X Scale( 0, 2 ),
suppressaxes( 1 ),
Marker( icon, {1, 1} ),<<backgroundcolor("white"),<<markersize(3)
);
{r} = (gb[framebox(1)] << getpicture)<<getpixels("r");
r = r[(gridcenterY-iconhalf)::(gridcenterY+iconhalf-1),(gridcenterX-iconhalf)::(gridcenterX+iconhalf-1)];
img = newimage("rgba",{r,r,r,1-r});
img<<saveimage("$temp/icon"||char(icon)||".png","png");
);
LB=lineupbox(ncol(8));
for(icon=0,icon<=31,icon++,
bb=buttonbox();
bb<<seticon("$temp/icon"||char(icon)||".png");
eval(evalexpr(bb<<setscript(updategraph(expr(icon)))));
LB<<append(bb);
);
updategraph = function({n},
(gb<<child)<<delete;
eval(evalexpr(gb<<append(graphbox(marker(expr(n),{50,50})))));
);
newwindow("icons", LB, gb=borderbox(textbox("choose a symbol")));
Buttons with custom icons