Averaging over columns while ignoring zero entries

Mean /@ DeleteCases[Transpose@list, 0, All]

{2,3,3,4,4,3,9}


I'm posting this as a CW answer, so J.M.'s very nice answer, made in a comment above, gets recorded as a real answer.

list = {{1, 3, 4, 5, 6, 0, 9}, {4, 0, 3, 5, 0, 2, 0}, {1, 0, 2, 2, 2, 4, 0}};
Total[list]/Total[Unitize[list]]

{2, 3, 3, 4, 4, 3, 9}

Update

As J.M. points out in a comment below, there is more robust formulation that handles the cases where one or mort columns contain all zeros.

list = {{1, 3, 4, 5, 6, 0, 0}, {4, 0, 3, 5, 0, 2, 0}, {1, 0, 2, 2, 2, 4, 0}};
 Total[list]/(Total[Unitize[list]] /. 0 -> 1)
{2, 3, 3, 4, 4, 3, 0}