What you need is a nonlinear function to map to, one that is close to zero for values near x=-100, reaches 1/2 at x=0, and 1 at x=10. This works,
Plot[Exp[x Log[2]/10]/2, {x, -100, 10}, PlotRange -> All]

So applying this to a ColorFunction
cf = ColorData["TemperatureMap"][Exp[# Log[2]/10]/2] &
BarLegend[{cf, {-100, 10}}]

Using a 3-point Interpolating function
J.M. suggested using a 3-point interpolation function, which at first I was unable to get to work. Here is a naive attempt, and remember that the function must stay between 0 and 1.
Plot[Interpolation[{{-100, 0}, {0, .5}, {10, 1}}][x], {x, -100, 10}]

Then I read the rest of his comment, about supplying derivatives. Still thinking about the exponential function above, I assumed the derivative should start at some small value and be monotonically increasing.
Plot[Interpolation[{{{-100}, 0, .001}, {{0}, 1/2, 1}, {{10}, 1, 2}}][
x], {x, -100, 10}]

which would clearly make an awful color map since more than one value would correspond to a single color.
Here are derivative values that seem to work
fun = Interpolation[{{{-100}, 0, 0}, {{0}, 1/2, .015}, {{10},
1, .015}}];
{Plot[fun[x], {x, -100, 10}],
BarLegend[{ColorData["TemperatureMap"][fun[#]] &, {-100, 10}}]}
You could use Manipulate to get just the right color function as well,
Manipulate[
fun = Interpolation[{{{-100}, 0, d1}, {{0}, 1/2, d2}, {{10}, 1, d3}}];
{Plot[fun[x], {x, -100, 10}, ImageSize -> 300],
BarLegend[{ColorData["TemperatureMap"][fun[#]] &, {-100, 10}}]},
{d1, 0, .02}, {d2, 0, .02}, {d3, 0, .02}]

Gonna take this time to mention this post which allows you to create a completely custom color function interactively.
ColorFunctionwithBlend. I was just hoping for a more easier way withRescaleand aColorSchemeor so... – Kay Apr 13 '16 at 12:37ColorData? – Kay Apr 13 '16 at 12:40