Python 182206 characters
import itertools i,j,v=1,2,[] while i<1000000: v+=[i] i,j=j,i+j y=input() for t in xrange(len(v)+1): for s in itertools.combinations(v,t): if sum(s)==y: print "+".join(map(str, s))+"\n"
>9 (1, 8) (1, 3, 5) 1000 (13, 987) (5, 8, 987) (13, 377, 610) (2, 3, 8, 987) (5, 8, 377, 610) (13, 144, 233, 610) (2, 3, 8, 377, 610) (5, 8, 144, 233, 610) (13, 55, 89, 233, 610) (2, 3, 8, 144, 233, 610) (5, 8, 55, 89, 233, 610) (13, 21, 34, 89, 233, 610)25 (2, 3, 8, 55, 89, 233, 610)1+3+21 (5, 8, 21, 34, 89, 233, 610) (2, 3, 8, 21, 34, 89, 233, 610)1+3+8+13 20481000 (1, 5, 13, 55, 377, 1597)13+987 (1, 2, 3, 13, 55, 377, 1597) (1, 5, 13, 21, 34, 377, 1597)5+8+987 (1, 5, 13, 55, 144, 233, 1597) (1, 5, 13, 55, 377, 610, 987)13+377+610 (1, 2, 3, 5, 8, 55, 377, 1597) (1, 2, 3, 13, 21, 34, 377, 1597) (1, 2, 3, 13, 55, 144, 233, 1597)2+3+8+987 (1, 2, 3, 13, 55, 377, 610, 987) (1, 5, 13, 21, 34, 144, 233, 1597)5+8+377+610 (1, 5, 13, 21, 34, 377, 610, 987) (1, 5, 13, 55, 144, 233, 610, 987)13+144+233+610 (1, 2, 3, 5, 8, 21, 34, 377, 1597) (1, 2, 3, 5, 8, 55, 144, 233, 1597)2+3+8+377+610 (1, 2, 3, 5, 8, 55, 377, 610, 987) (1, 2, 3, 13, 21, 34, 144, 233, 1597)5+8+144+233+610 (1, 2, 3, 13, 21, 34, 377, 610, 987) (1, 2, 3, 13, 55, 144, 233, 610, 987)13+55+89+233+610 (1, 5, 13, 21, 34, 55, 89, 233, 1597) (1, 5, 13, 21, 34, 144, 233, 610, 987)2+3+8+144+233+610 (1, 2, 3, 5, 8, 21, 34, 144, 233, 1597) (1, 2, 3, 5, 8, 21, 34, 377, 610, 987)5+8+55+89+233+610 (1, 2, 3, 5, 8, 55, 144, 233, 610, 987) (1, 2, 3, 13, 21, 34, 55, 89, 233, 1597)13+21+34+89+233+610 (1, 2, 3, 13, 21, 34, 144, 233, 610, 987) (1, 5, 13, 21, 34, 55, 89, 233, 610, 987)2+3+8+55+89+233+610 (1, 2, 3, 5, 8, 21, 34, 55, 89, 233, 1597) (1, 2, 3, 5, 8, 21, 34, 144, 233, 610, 987)5+8+21+34+89+233+610 (1, 2, 3, 13, 21, 34, 55, 89, 233, 610, 987) (1, 2, 3, 5, 8, 21, 34, 55, 89, 233, 610, 987)2+3+8+21+34+89+233+610