QGIS won't do this natively to the best of my knowledge. However, you can use GRASS from within QGIS, and this thread looks like exactly what you want. I haven't tested this, but it all makes sense. Credit of course goes to the folks in that thread. First, you would import your data into GRASS then:
dump the coordinates to a text file (v.out.ascii) then loop thru that file, and
feed the coords to v.edit, like so:
v.out.ascii out=points.txt while read x y; do
v.edit tool=break coord=$x,$y cat=0-99999 done < points.txt
Note the caveat that your points must be exactly on the line.
Or, even simpler in a bash environment:
v.out.ascii format=point in=pts --q | cut -d'|' -f1,2 | tr '|' ',' |
while read COOR; do v.edit map=line tool=break coords=$COOR; done