Mobile user agent check
First of all I guess your first step of the detection process is processed server side because you said there is a fallback which is processed by JavaScript.
Therefore I guess you only perform a HTTP User-Agent check so far.
Suggestion BlackBerry
I would recommend to add also a check of the Accept request header to your first step of detection.
In one of my recent projects I ran into trouble cause the HTTP User-Agent detection of BlackBerry failed in some cases. For these casees I had to add an Accept request header check which looks for /vnd.rim/.
I didn't find out much about the background why it happens. I only know some BlackBerry browsers try to emulate IE or Firefox.
Example
Taken from the BlackBerry 8120 device specification document: application/vnd.rim.html
Suggestion J2ME Devices
Clients using this technology might be quite rare but to be sure you could include another RegEx for midp to cover all kind of MIDP devices.
Question
I know they're dead but I think there are still some around. What about Palm and webOS devices?