Element, 22 19 18 bytes
_'{"(3:~'![2:`];'}
Example input/output: hello world
-> helo wrd
This works by simply processing the string one character at a time and keeping track which ones it has seen before.
_'{"(3:~'![2:`];'}
_ input line
' use as conditional
{ } WHILE loop
" retrieve string back from control (c-) stack
( split to get the first character of (remaining) string
3: a total of three copies of that character
~ retrieve character's hash value
' put on c-stack
! negate, gives true if undef/empty string
[ ] FOR loop
2:` duplicate and output
; store character into itself
' put remaining string on c-stack as looping condition