The first thing is this strange line:
Code:
flags = | OVERLAY | OVERLAY | OVERLAY;


replace it with
Code:
flags = OVERLAY;



for hiding the panel startgame_pan, you have to type
Code:
reset(startgame_pan, VISIBLE);


like you did already for main_pan

I have no idea why you are using the wait(2); in your main function. it doesn't look useful there from that piece of code.

And about the mouse_spot: it defines the offset of the mousespot. So the spot is not in the top left corner anymore in your case. I'm not sure if it's that what you want. Just wanted to mention it.

and one last thing to notice: you don't need a wait(3) behind a level_load in the engine anymore.

So you code would be
Code:
PANEL* startgame_pan =
{
	bmap = "main2_tga";
	pos_x = 0;
	pos_y = 468;
	button (0, 1, "StartGame3_bmp", "StartGame3_bmp", "StartGame3_bmp",NULL, NULL, NULL);
	button (330, 1, "settings3_bmp", "settings1_bmp", "settings2_bmp", startgame_to_settings, NULL, NULL);
	button (580, 3, "extras3_bmp", "extras1_bmp", "extras2_bmp", startgame_to_extras, NULL, NULL);
	button (800, 0, "quit3_bmp", "quit1_bmp", "quit2_bmp", startgame_to_quit, NULL, NULL);
	button (10, 70, "new3_bmp", "new1_bmp", "new2_bmp", start_game, NULL, NULL);
	button (10, 120, "load3_bmp", "load1_bmp", "load2_bmp", NULL, NULL, NULL);
	button (10, 170, "save3_bmp", "save1_bmp", "save2_bmp", NULL, NULL, NULL);
	flags = OVERLAY;
}


function main()
{
	fps_max = 70;
	video_mode = 9;
	video_screen = 1;

	set (main_pan, VISIBLE);
	mouse_mode = 4;
	mouse_map = mouse_pcx;
}

function start_game()
{
	reset(main_pan, VISIBLE);
	reset(startgame_pan, VISIBLE);
	game_started = 1;
	mouse_mode = 0;
	level_load (NULL);
}