To me shadowing of existing values like described in:
Shadowing and Nested function
immutable in F#
f# duplicate definition
FSharp for fun and profit com
One place I use shadowing is when resolving an optional parameter to a default value if no value was supplied.
member x.Foo(?myFlag: bool) =
let myFlag = defaultArg myFlag false
...
Also F# Interactive, the way it's implemented now, would be pretty much completely non-functional if we didn't have shadowing.