Get rid of the "start" label, that's a bad habit you've picked up.
You've got quite a nice structure there, clear subroutines and indented too

. You should make it a bit clearer where subroutines end and stuff like that, it just makes it easier to read that's all.
`UNBEATABLE PONG
`By Quirkyjim
gosub setup
gosub draw_first
print "Press any key to start"
wait key
`///////////
`Main loop
`///////////
main_loop:
do
sync
cls
gosub show_score
gosub check_input
gosub move_ball
gosub move_player
gosub move_enemy
if ballx > 640
goto you_lose
endif
loop
`///////
` SUBS
`///////
setup:
sync on
sync rate 60
player_score = 0
ballx = 320
bally = 240
playerx = 635
playery = 240
enemyx = 5
enemyy = 240
ballmomentumx = rnd(5)
ballmomentumy = rnd(2)
inc ballmomentumx
inc ballmomentumy
return
`//
draw_first:
`ball
set current bitmap 2
circle 0,0,3
get image 1,0,0,5,5
set current bitmap 0
sprite 1, ballx, bally, 1
`player
set current bitmap 3
line 0, 0, 0, 50
get image 2,0,0,2,51
set current bitmap 0
sprite 2,playerx,playery,2
`enemy
set current bitmap 4
line 0,0,0,50
get image 2,0,0,2,51
set current bitmap 0
sprite 3,enemyx,enemyy,3
return
`//
show_score:
center text 320, 90, str$(player_score)
return
`//
check_input:
if upkey() = 1
dec playery, 5
endif
if downkey() = 1
inc playery, 5
endif
return
`//
move_ball:
inc ballx, ballmomentumx
inc bally, ballmomentumy
if ballx = playerx
if bally = playery
ballmomentumx = ballmomentumx * -1
inc player_score
endif
endif
if ballx = enemyx
if bally = enemyy
ballmomentumx = ballmomentumx * -1
endif
endif
sprite 1,ballx,bally,1
return
`//
move_player:
sprite 2,playerx,playery,2
return
`//
move_enemy:
enemyy = bally
sprite 3,enemyx,enemyy,3
return
`//
I'll go through your code a bit more just posting now in case someone else is reading your code.

Goke of the day: I coded an AI replica of Steve Irwin. It crashed because of a string array.