You will probably have to run it in a coroutine, when you are setting it from i.e. OnTrigger/OnColission which are only called once per collision or set a variable and use this variable for the second parameter of Lerp in Update() method.
Example coroutine:
function LerpFoV(fov : float) {
// lerping a value in this way may take quite some time to reach the exact target value, so we will just stop lerping when the difference is small enough, i.e 0.05
var dif : float = Mathf.Abs(Camera.main.fieldOfView - fov);
while(dif > 0.05) {
Mathf.Lerp(Camera.main.fieldOfView, fov, 0.1);
// update the difference
dif = Mathf.Abs(Camera.main.fieldOfView - fov);
yield;
}
}
// start the coroutine
StartCoroutine(LerpFoV(100));