Have a look at Using millis() for timing. A beginners guide, Several things at the same time and look at the BlinkWithoutDelay example in the IDE.
Using millis() for timing allows you to read inputs on each iteration of loop() with no blocking code to slow things down.