F#, 584 bytes
(includes necessary indentation and LFs)
let d a b=if b=0.0 then nan else a/b
let o=["*",((*),1);"+",((+),0);"/",(d,1);"-",((-),0)]
let b=double
let rec z=function|[x]->[x,[]]|x::s->(x,s)::List.map(fun(y,l)->y,x::l)(z s)
let rec p=function|[]->[[]]|l->z l|>List.collect(fun(x,r)->p r|>List.map(fun l->x::l))
let f=fst
let e o p x y z=if snd o]let m a=
for i in p(Seq.toList a)do
let x,y,z=b i.[0],b i.[1],b i.[2]
for j in[for j in o do for k in o do yield[j;k]]do
printfn "%.0f%s%.0f%s%.0f = %.0f" x (f j.[0])y (f j.[1])z (e(snd j.[0])(snd j.[1])x y z)
0
Kudos to kvb for his/her permutations function.
It wound up being quite similar in structure to Thomas' C# solution (maybe because his solution is already quite functional)