Here I give a straightforward and simple approach, which very probably could be ameliorated.
Make a list of points
pts = {{1, 2}, {3, 5}, {7, 4}, {4, 8}, {6, 6}, {3, 6}}
Get all pairs of them (two points defining a straight line)
pairs = Flatten[Table[{pts[[i]], pts[[j]]}, {i, 1, Length[pts] - 1}, {j, i + 1, Length[pts]}], 1]
For each pair construct the function (line) through these points
funcs = (#[[1]] + (#[[2]] - #[[1]]) t) & /@ pairs
Now check each function if it hits any other point
hits0 = Flatten[Table[ {i, j, Solve[funcs[[i]] == pts[[j]], t]}, {i, 1, Length[funcs]}, {j, 1, Length[pts]}], 1]
If t is either 0 or 1 these are the generating points of the line in question, if there is no solution (no other point is hit) Solve returns {}. So set the answers to theses cases to {}
hits1 = hits0 /. {{x__, {{t -> 0}}} -> {}, {x__, {{t -> 1}}} -> {}, {x__, {}} -> {}}
Now delete all the {} (which could be done in one step)
hits = DeleteCases[hits1, {}]
and you find for example that function 3 (generated by points {1,2} and { 4,8 } ) hits point {3,6}
In[7]:= funcs[[3]] /. t -> 0
funcs[[3]] /. t -> 1
funcs[[3]] /. t -> 2/3
Out[7]= {1, 2}
Out[8]= {4, 8}
Out[9]= {3, 6}
I think from here on you could solve your original problem. Be careful to eliminate doubles: if a line through p1, p2 hits p3, than a line through p2,p3 hits p1 ( or the line through p1, p3 hits p2 ), but they describe the same line. Therefore there is some further work to be done.
You may want to have a look at
plist = {funcs[[#[[1]]]] /. t -> 0, funcs[[#[[1]]]] /. t -> 1, funcs[[#[[1]]]] /. #[[3, 1]]} & /@ hits
DeleteDuplicates[Sort /@ plist]
indicating that that there are 3 points on one line. This is indeed the case
Graphics[{PointSize[.02], Red, Point /@ pts}, Axes -> True]
Try the whole thing with
pts = {{1, 2}, {3, 5}, {7, 4}, {4, 8}, {6, 6}, {3, 6}, {6, 10}, {12, 20}}
Another approach could be
Take a pair of points, define the line function, look if other points are located on this line, if yes, write function and points to another list and delete the points of this line from the original point- list, take the next pair until all pairs are checked.