[Element](https://github.com/PhiNotPi/Element), <s>22</s> <s>19</s> 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