This is a straightforward application of Mathf.Clamp(value, min, max)
. Ordinarily I'd recommend caution calculating new orientations from Euler angles, but for camera orientation it's typically safe enough. You might want to pull back slightly from 90, say 80 degrees, so you don't hit nasty behaviour right at the poles.
// Correct for deltaTime so your behaviour is framerate independent.
// (You may need to increase your speed as it's now measured in degrees per second, not per frame)
float angularIncrement = verticalSpeed * Input.GetAxis("Mouse Y") * Time.deltaTime;
// Get the current rotation angles.
Vector3 eulerAngles = transform.localEulerAngles;
// Returned angles are in the range 0...360. Map that back to -180...180 for convenience.
if(eulerAngles.x > 180f)
eulerAngles.x -= 360f;
// Increment the pitch angle, respecting the clamped range.
eulerAngles.x = Mathf.Clamp(eulerAngles.x - angularIncrement, -90f, 90f);
// Orient to match the new angles.
transform.localEulerAngles = eulerAngles;