Several bus companies operate direct services to Mersing, e.g. Transnasional from Kuala Lumpur, Malacca, and Singapore, while others that use the east coast highway (e.g. Johor Bahru to/from Kota Bahru) also call at Mersing.
From Malacca, take the S&S International from Central Bus Station (it's the only direct bus). Departure times are 8am, 12.45 and 6.15pm. It takes about 4½ hours to arrive at the Mersing Bus Terminal (15 min walk to the island boats).
From Singapore, the cheapest way to Mersing is to first take a bus from from Queen Street Bus Terminal) to Larkin terminal in Johor Bahru. It takes about an hour off-peak. But it's important to note that direct onward buses from Larkin to Mersing are limited so get there in time to catch an early bus like 8:30 AM, 9 AM, 10 AM, 11.30 AM or 2:30 PM (the latter being often too late to take the last ferry to Tioman), so pre-book your ferry to make sure your bus arrival time in Mersing matches your ferry's departure time. Buses heading to Kuantan will drop you off in Mersing. There is a direct Transnasional bus from Lavender Street Terminal. It could prove easier but it's three-times the cost. The first bus departs at 9 AM and reaches Mersing by 1 PM. You will likely need to book a day or more in advance.
When leaving Mersing, if you don't pre-book, the bus may be full. For travel to Johor Bahru (11.30 AM) and Singapore (1 PM), an alternative is to take the local bus to Kota Tinggi (less than 2 hrs) and then another local bus to Johor Bahru's Larkin terminal (less then 1 hour), and then onward to Singapore (buses going all the time).
Transnasional Express Website
• Kuantan, Terengganu, Kelantan, Kuala Lumpur, Johor Bahru, Singapore
S&S International Express
• Johor Bahru(RM11.70), Kluang, Muar, Malacca, Kuala Lumpur