A little tricky to say by looking at code alone.
The first thing you need to check in such cases – if your validation function receives data from submitted form. var_dump()
input and die;
right after that to stop execution and prevent redirect back.
Depending on what you get there (if anything) check back through Settings API functions. There are a lot of arguments to juggle with those and it is easy to mix then up.