Botswana's main airport is Sir Seretse Khama in Gaborone. Most flights arriving in Botswana are from Johannesburg in South Africa. There are no international flights besides South Africa and Zimbabwe.Update: international flights for gabarone[botswana] are now flying from nairobi[kenya]. The airport in Maun can also be reached via Johannesburg or Gaborone and, once a day in summer 2009, from Windhoek, Namibia. The distance between Gaborone and Maun is more than 1,000km. Maun is very much a tourist attraction spot.
Trains to/from South Africa have been withdrawn since 1999. A rail link from from Francistown Bulawayo, Zimbabwe was started in June 2006 (http://www.seat61.com/Bot...). Note that all domestic passenger services have been suspended indefinitely as of April 2009.
There is regular bus service from Johannesburg to Gaborone, which takes six hours. There is also service from Windhoek, Namibia via the Caprivi Strip which will drop you in Chobe National Park, in northern Botswana. There is also bus service from Victoria Falls in Zimbabwe. See Intercape Mainliner (http://www.intercape.co.za/) for information on service from Namibia and Zimbabwe. Private shuttles ran until 2004 from Windhoek directly to Maun and in late 2005, such a service was starting up again.
There are several entry points by road to Botswana: In the south at Gaborone, providing access from Johannesburg; in the west providing access from Namibia; the north providing access from Namibia, Zambia and Zimbabwe; and at Francistown in the east, providing access from Harare. All road access is good and the primary roads within Botswana are paved and well maintained.
Coming from Namibia, you can either go north to Maun, or south along the Trans-Kalahari Highway to Lobatse.