호는 옥봉(玉峰). 평안남도 강서 출생.
조선 말기 육군참령(陸軍參領)으로서 시위기병대장·시종무관 재임 중, 1907년 일제에 의해 군대가 해산되자 격분하여 항전을 전개하였다.
1910년 봄 안창호(安昌浩)가 주최한 청도회담(靑島會談)에 참석하기 위해 중국 본토로 탈출하다 도중에 일본 관헌에 체포되어 강제로 귀국당하였다.
귀국 후 일본의 회유정책에 의해 안주군수(安州郡守)로 재직 중 3·1운동이 일어나자, 현직을 이용해 주도적으로 만세시위운동을 지원하다 관직을 버리고 상해로 탈출하였다. 1919년 대한민국임시정부 수립을 계획하고 참여하여 군무부차장을 지냄과 동시에 육군사관학교 교관으로 부임, 민족독립사상을 고취하였다.
1919년 10월 31일 대한민족대표 30인 중의 1인으로 임시정부가 발표한 「제2독립선언서」에 서명하였다. 1920년 1월에는 상해에 세워진 임시정부 산하 육군무관학교(陸軍武官學校) 교장을 겸임하면서 청년의 군사교육을 배려하고 정책을 수립, 시행하였다.
1920년 임시정부 군무부차장으로서 동삼성에 들어가 대한청년단연합회·대한독립단·서로군정서(西路軍政署)를 통합, 서간도에 임시정부 직속기관인 대한광복군총영(大韓光復軍總營)의 설치를 주도하고, 국내 무력진격전을 감행하며 항일독립전쟁을 계속하였다.
『백범일지(白凡逸志)』에는 임시정부 군무부차장 때 일본군에 항복하고 본국으로 들어갔다고 씌어 있다. 일본군에 항복한 이후 친일파로 변절하였으며, 광복 후 월남하여 서울에 거주하다가 1950년 한국전쟁 때 사망하였다.
1980년 건국훈장 독립장이 추서되었으나 차후 김희선의 친일 행적이 드러나 1996년 국가보훈처에서 서훈을 취소하였다.