This is now possible using just selections and a rule-based symbology.
This requires the Expression Plus plugin (for QGIS 2.x. 3.0 has the functionality built in).
Create a rule based symbology with the filter of:
QGIS 3.0+ (from thequerist in the comments):
is_selected()
QGIS 2.12+12-2.18:
isselected( @layer_name )
Or QGIS 2.8:
isselected( 'ACTUAL_NAME_OF_LAYER' )
Now only the selected features that meet this rule will be shown.
You can also have an ELSE rule for all unselected features.