From San Pedro you can fly to Roatan via a local carrier - TACA, Islena, LACSA etc. - often with a stop in La Ceiba - or take the Hedman Alas bus to La Ceiba and fly/ferry on to Roatan. Either one will likely require an overnight in either San Pedro or La Ceiba depending on when you arrive. Preferably in La Ceiba from what I've read.
We found it just easier to fly direct to Roatan on Continental through Houston. Leaving here (Phoenix) at 6AM we were on Roatan just after noon.
One option from La Ceiba is the Galaxy Ferry to Roatan, it runs twice daily. You can also get to Utila from there via the Princess Ferry if that's of interest. Or fly to Utila via SOSA or Atlantic Airlines - maybe TACA also.
All the really good diving is off the Bay Islands - Roatan, Utila or Guanaja. I've never read of any good diving off the mainland.
moved to the Bay Island forum...