I like using the grid because it makes layout easy. This is how I'd like to see it work:
An adjustable grid size from 1 pixel per square up to some user defined maximum (with hotkeys for 2, 4, 8, 16, 32, etc). If control is held down while moving a component then the grid size will temporarly be changed to 1 pixel per square.
Just had one other idea too, not sure if it'd be useful though, if a component is placed while grid size is 1 pixel per square and then the component is moved at a bigger grid size with snap to grid on, it might be useful if the component kept it's offset from the grid when snapping. Ok that didn't come out to well, so I'll try and explain it with an example:
Lets say you've placed a component with a grid size of 1 pixel per square, and then you change the grid size to 8 pixels per square. Now lets say at this grid size the components left side falls half way between the edges of a grid square (or an offset of 4 pixels from the grid) then it might be useful if the component could keep this offset when snapping.
In this world there's 11 types of people: those who understand binary, those who don't, and those who understand trooleans.