There are two ferries connecting Nkhata Bay with the rest of the counrty: The “Ilala” is coming twice a week. (northbound on Saturday night, southbound on Monday afternoon.) It can also happen that she leaves on Tuesdays if there is an extra trip to Mbamba Bay to do.
The “Songea” is arriving on Sunday afternoon. (Didn’t manage to organise a schedule, sorry!)
Nkhata Bay can be reached by busses and mini busses. Busses are not reliable. Coming from Mzuzu they sometimes skip Nkhata Bay and follow the lake shore road south without picking passengers up. In theory there are two daily busses between Mzuzu and Blantyre. One night bus and one day bus. Both are supposed to stop in Nkhata bay at 6 -7 am / pm.
Several mini buses a day go to Mzuzu and Dwangwa (it says Salima, but its not) when full.