How do I improve accuracy and know when to stop training?
Is there anything else I could do to improve accuracy for both training and testing? 


Yes, of course, there are a lot of methods if you want to try to improve your accuracy, some that I can mention:


Try to use a more complex model: ResNet, DenseNet, etc.
Try to use other optimizers: Adam, Adadelta, etc.
Tune your hyperparameters (e.g. change your learning rate, momentum, rescale factor, convolution size, number of feature maps, epochs, neurons, FC layers)
Try to analyze your data, with ~75% and 4 categories, is that possible there is one category that difficult to classified?


In essence, you have to do a lot of experiments with your model until you think "it is enough" (if you have a deadline). If you don't have a hard deadline, you can keep improving updating your ML model.


  How can I know if this is the best accuracy I can get?


No, you can't until you compare it with other models/hyperparameters. If you do more experiments (some ways like the one I mentioned above) or compare with other people's experiments that using the same data, you'll find which one is the best. For an academic paper, for example, you need to compare at least 3 to 4 models that similar or experiment with hundreds of different hyperparameters combination.