mergeV[g_, v1_, v2_] := Graph[#[[1]], EdgeWeight -> #[[2]], EdgeLabels -> "EdgeWeight",
VertexLabels -> Placed["Name", Center], VertexSize -> 0.3] &@
Transpose[
Transpose[{EdgeList[g], PropertyValue[g, EdgeWeight]}] /.
{v1-> new, v2 -> new} /. {new \[DirectedEdge] new, x_} -> Sequence[] //.
{a___, {new \[DirectedEdge] x_, k1_}, b___, {new \[DirectedEdge] x_, k2_}, c___} -> {a, {new \[DirectedEdge] x, k1 + k2}, b, c} //.
{a___, {x_ \[DirectedEdge] new, k1_}, b___, {x_ \[DirectedEdge] new, k2_}, c___} -> {a, {x \[DirectedEdge] new, k1 + k2}, b, c}]
mergeV[g, a, b]
Edit
Also, using the adjacency matrix:
m = WeightedAdjacencyMatrix[g];
ff = Flatten[Position[VertexList@g, #] & /@ {a, b}, 2]
m[[ff[[2]]]] = m[[ff[[1]]]] + m[[ff[[2]]]];
m = Transpose[m];
m[[ff[[2]]]] = m[[ff[[1]]]] + m[[ff[[2]]]];
m = Delete[Transpose[Delete[m, ff[[1]]]], ff[[1]]]+ SparseArray[{{i_, i_} -> Infinity}, Length@m {1, 1}];
g1 = WeightedAdjacencyGraph[(Delete[VertexList@g /. b -> new, ff[[1]]]), m,
VertexLabels -> Placed["Name", Center], EdgeLabels -> "EdgeWeight", VertexSize -> 0.3]