See cubsur's www.algarvebus.info for starters.
Note the following:
1) Rail
There is no station at Vilamoura. The nearest is Loulé Station at Quatra Estradas, confusingly 5km from Loulé.
From Vilamoura you would have to get a bus to Quarteira Bus Station and then one to Quatra Estradas and then the train.
2) Bus
Get a bus to Faro via Quarteira and then a bus or train from Faro to Olhão.
There is very little between trains and buses cost wise.
It will only cost a maximum 5 to 6 euros each way.
If you can get a lift to Quatro Estradas and then the train it may only be about Euro 5 return.
See this link for the downloadable summer 2007 pdf timetable for the Algarve Line from the www.cp.pt site. Note Loule=Loule Quatro Estradas:
http://www.cp.pt/StaticFiles/Imagens/PDF/Passageiros/horarios/regionais_2007/vrantonio_lagos.pdf
If this doensn't show up here properly go to my blog
http://barlaventostravelblog.blogspot.com/
On the right a little way down you wil find a panel entitled:
Algarve & Portugal - Travel Transport Links
Click on the last item
Portuguese Railways - Summer 2007 - Algarve Regional Line Timetable
You should be able to download the timetable from there!
Hope this helps