Its not much of a hassle for Java to create a JPanel a few times. You shouldn’t spend time trying to optimize before you see a need to. If it’s not lagging or slowing you down, don’t try to optimize it.
I use the approach you’re talking about, where I have each view/menu on separate JPanels. It works like a charm, and it is very easy to control. But you’re removing buttons and such when certain buttons are clicked, like in the actionlistener on the continue-button.
Instead, you could try a very different approach. The menus could be on several JPanels, which you can switch between by simply changing the contentpane on your gameframe. Roll in the menu on its own panel, menuPanel, and then when a button is pressed and all the needed information to start the game is in order, you change the contentPane of your frame from menuPanel to a new gamePanel, which handles rendering of the game.
If you want, you can add even more panels on top of your gamePanel…the frame won’t mind. So if you want in-game menus, you’re free to use Swing for those, without having to kill the gamePanel. You can even spawn extra JPanels IN your gamePanel!
About your buttons, I think they look fine. Actually, they’re spectacular for a Paint-job. They might benefit from a little blur on the edges, but what would REALLY help them, is if they weren’t on a monotonous grey background. The surrounding colors make a huge difference to an image (which is why AmbiLight is popular for TVs).
I did some quick n’ dirty image editing to put your button on a vibrant game, so you can see what I mean. When surrounded by colors and graphics that aren’t as unnatural as a completely monotonous grey, the pixelated edges even seem to give the button a more realistic look, than if it were blurred. Maybe a mix of the two approaches would be more spot on?
http://img18.imageshack.us/img18/4040/newgamebutton.png