Python 2, 123 120 bytes
N=sorted(map(int,raw_input().split(' ')));print(''.join((''if n+1in N else'-'+`n`)if n-1in N else' '+`n`for n in N)[1:])
If the input can be a list as a function argument then (thanks mbomb007 and xnor for the conditionals)
93 9090 81 bytes
def f(N):print''.join((''if' '+`n`,`-n`*-~-(n+1in N else`-n`)if n)[n-1in N else' '+`n`forN]for n in sorted(N))[1:]
(77 bytes if leading whitespace is acceptable - drop the final [1:]
)