I tried setting the log_interval to 10sec but then it makes the buttons etc.. un-usable on the LCD shield
I am assuming you are using 'delay()' to time your logging loop. This is a problem for all but very simple-minded logging applications because nothing else can happen during the delay.
A better way to do it is to let the loop run as fast as it wants, and base your logging on a time-check: If 10 seconds have elapsed since the last log, remember the time and do another log.
Second, is there a way I can either have a physical switch or a software option to disable the data logger?
Just wire the switch to a digital input and check the state of that when you do the time-check mentioned above.
At the moment every time it reboots it HAS to have an SD card inserted and also makes a new log file every time. Is there a way around this?
Most likely. Post the code you are using and we'll take a look.