A couple of people have asked about this so I thought I'd just whack a post up about it.
This script when placed in your individual class .cfg files will hide/show weapon viewmodels as you see fit. I (and Cheez and Mama) found recently that turning off models for hitscan weapons = ultimate win and this will turn them on/off for each different weapon and can be changed around for each class.
//Viewmodel show/hide
-----------------------------
alias slot_1 "slot1; r_drawviewmodel 0"
alias slot_2 "slot2; r_drawviewmodel 0"
alias slot_3 "slot3; r_drawviewmodel 1"
bind "MWHEELUP" slot_1
bind "MWHEELDOWN" slot_2
bind "MOUSE5" slot_3
And thats it. You can change the bind to whatever key you currently use. The only downside being that you can't use the mousewheel to scroll weapons and sometimes when you change class it'll show/hide the viewmodel, but this sorts itself out if you change weapon and then change back.
edit - To show viewmodel change the 0 to 1 and vice versa

. I'm also sure theres a way to have different crosshairs for different weapons and stuff as well but CBA to look it up yet so this will have to do you for the time being.
edit 2 - If you want different crosshairs for each weapon add this line inside the quote marks after the r_drawviewmodel 0 command
"; cl_crosshair_red 255; cl_crosshair_green 0; cl_crosshair_blue 0; cl_crosshair_file crosshair5; cl_crosshair_scale 30"
Red, green and blue change colour (obviously), crosshair file is the type/style of crosshair and the scale is the size. I don't know what the numbers are so screw you, figure it out for yourselves! You'll also need to change them for all weapons for all classes otherwise you'll end up carrying them over from classes you haven't set up

.