If there are no multiple positions for each insertelement
we can do something like:
i = 0;
Insert[origlist, "mark", insertpositions] /. "mark" :> (++i; insertvalues[[i]])
(*insertposition should be sorted*)
if, there are it can be exteded easily, by making duplicates in insertelements
or to make different "marks"
for them.