Scheme's 'char-ready? is probably close to what you're looking for. It returns #f if the runtime can guarantee that the stream would have blocked if it were read from at that time, and otherwise it returns #t.
; This exploits an Arc 3.1 bug to drop to Racket (as seen at
; http://arclanguage.org/item?id=11838). It's unnecessary on Anarki.
(mac $ (racket-expr)
`(cdr `(nil . ,,racket-expr)))
(def discard-input ((o str (stdin)))
" Reads all the characters from the stream, giving up partway if it
can determine the stream would block. The return value is `nil'. "
(while:and $.char-ready?.str readc.str))
(do (pr "enter something> ")
(prn "The first character was " (tostring:write:readc) ".")
enter something> something
The first character was #\s.